Hard worker
Hard worker

Reputation: 4046

How to add an hour onto the time of this datetime string?

Here's an example of the datetime strings I am working with:

Tue May 15 10:14:30 +0000 2012

Here is my attempt to add an hour onto it:

$time = 'Tue May 15 10:14:30 +0000 2012';
$dt = new DateTime($time);
$dt->add(new DateInterval('P1h'));

But the second line gives the error that it couldn't be converted.

Thanks.

Upvotes: 48

Views: 108467

Answers (3)

Marino Linaje
Marino Linaje

Reputation: 612

Previous answers works fine. However, I usually use datetime modify in my externally hosted websites. Check php manual for more information. With the code proposed, it should work like this:

$time = 'Tue May 15 10:14:30 +0000 2012';
$dt = new DateTime($time);
$dt->modify('+ 1 hour');

For those not using object orientation, just use it this way (first line DateTime just to bring somethng new to this thread, I use it to check server time):

$dt = new DateTime("@".$_SERVER['REQUEST_TIME']);  // convert UNIX epoch to PHP DateTime
$dt = date_modify($dt, "+1 hour");

Best,

Upvotes: 29

Jon
Jon

Reputation: 437336

You should add a T before the time specification part:

$time = 'Tue May 15 10:14:30 +0000 2012';
$dt = new DateTime($time);
$dt->add(new DateInterval('PT1H'));

See the DateInterval constructor documentation:

The format starts with the letter P, for "period." Each duration period is represented by an integer value followed by a period designator. If the duration contains time elements, that portion of the specification is preceded by the letter T.

(Emphasis added)

Upvotes: 110

lorenzo-s
lorenzo-s

Reputation: 17010

Using strtotime():

$time = 'Tue May 15 10:14:30 +0000 2012';
$time = strtotime($time) + 3600; // Add 1 hour
$time = date('D M j G:i:s O Y', $time); // Back to string
echo $time;

Upvotes: 9

Related Questions