59
<?php
    $date = "04-15-2013";
    $date = strtotime($date);
    $date = strtotime("+1 day", $date);
    echo date('m-d-Y', $date);
?>

This is driving me crazy and seems so simple. I'm pretty new to PHP, but I can't figure this out. The echo returns 01-01-1970.

The $date will be coming from a POST in the format m-d-Y, I need to add one day and have it as a new variable to be used later.

Do I have to convert $date to Y-m-d, add 1 day, then convert back to m-d-Y? Would I be better off learning how to use DateTime?

Fabio
  • 23,183
  • 12
  • 55
  • 64
Jayr
  • 593
  • 1
  • 4
  • 5
  • If your date will be coming in from a `POST`, then you're probably better off using `$tomorrow = date('m-d-Y',strtotime("+1 days"));` (Fabio's answer) and `$tomorrow = $_POST[$tomorrow];` in your data collecting script. – Funk Forty Niner Apr 15 '13 at 15:17

6 Answers6

130

there you go

$date = "04-15-2013";
$date1 = str_replace('-', '/', $date);
$tomorrow = date('m-d-Y',strtotime($date1 . "+1 days"));

echo $tomorrow;

this will output

04-16-2013

Documentation for both function
date
strtotime

Fabio
  • 23,183
  • 12
  • 55
  • 64
  • Perfect! I didn't know it would not recognize '-'. I have no problem changing it all over to '/'. Thank you! – Jayr Apr 15 '13 at 15:31
63
$date = DateTime::createFromFormat('m-d-Y', '04-15-2013');
$date->modify('+1 day');
echo $date->format('m-d-Y');

See it in action

Or in PHP 5.4+

echo (DateTime::createFromFormat('m-d-Y', '04-15-2013'))->modify('+1 day')->format('m-d-Y');

reference

John Conde
  • 217,595
  • 99
  • 455
  • 496
17
$date = strtotime("+1 day");
echo date('m-d-y',$date);
insoftservice
  • 820
  • 8
  • 15
3

use http://www.php.net/manual/en/datetime.add.php like

$date = date_create('2000-01-01');
date_add($date, date_interval_create_from_date_string('1 days'));
echo date_format($date, 'Y-m-d');

output

2000-01-2
mohammad mohsenipur
  • 3,218
  • 2
  • 17
  • 22
1

The format you've used is not recognized by strtotime(). Replace

$date = "04-15-2013";

by

$date = "04/15/2013";

Or if you want to use - then use the following line with the year in front:

$date = "2013-04-15";
hek2mgl
  • 152,036
  • 28
  • 249
  • 266
1

Actually I wanted same alike thing, To get one year backward date, for a given date! :-)

With the hint of above answer from @mohammad mohsenipur I got to the following link, via his given link!

Luckily, there is a method same as date_add method, named date_sub method! :-) I do the following to get done what I wanted!

$date = date_create('2000-01-01');
date_sub($date, date_interval_create_from_date_string('1 years'));
echo date_format($date, 'Y-m-d');

Hopes this answer will help somebody too! :-)

Good luck guys!

Community
  • 1
  • 1
Randika Vishman
  • 7,983
  • 3
  • 57
  • 80