4

i'm trying to add days to a date with the 'Y-m-d' format:

$oldDate = '2013-05-15';
$newDate = date('Y-m-d', strtotime($oldDate. " + 5 days"));

This ouputs '2013-5-20', but below:

$oldDate = '2013-05-15';
$addedDays = 5;
$newDate = date('Y-m-d', strtotime($oldDate. " + $addedDays days"));

doesn't work, it only outputs '1970-01-01', which doesn't make sense because i only tried to put the days to be added in a variable. They're basically the same code. I appreciate the help trying to understand this. Thanks!

muffin
  • 2,034
  • 10
  • 43
  • 79

3 Answers3

8

However the code is right and works, just in case try

$newDate = date('Y-m-d', strtotime($oldDate. " + {$addedDays} days"));
Javad
  • 4,339
  • 3
  • 21
  • 36
  • Ooops, my mistake really. i was adding '-2' days that's why.. anyway thanks for verifying the code – muffin Mar 17 '14 at 02:13
0

Use the DateTime class. It will spare you a lot of head-ache.

// Create a DateTime object
$date = new DateTime('2013-05-15');

// Original date
echo $date->format('d. F Y'), '<br>';

// Add 5 days
$date->modify('+5 days');

// Modified date
echo $date->format('d. F Y'), '<br>';
Sverri M. Olsen
  • 13,055
  • 3
  • 36
  • 52
-1

I had checked it, but it doesn't work on my computer (likely due to the PHP version). I found an alternative solution, though:

$timeBase = time();

$sDays2change = '+182'; // 6 months

$newtime = strtotime($sDays2change . ' day', $timeBase);

echo date('d/m/Y', $newtime);
Chris Forrence
  • 10,042
  • 11
  • 48
  • 64
Colito
  • 1
  • 1