php string in a date format, add 12 hours

2019-01-26 11:23发布

问题:

I have this string object in my php array

"2013-03-05 00:00:00+00"

I would like to add 12 hours to the entry within PHP, then save it back to string in the same format

I believe this involves converting the string to a date object. But I'm not sure how smart the date object is and if I need to tell it formatting parameters or if it is supposed to just take the string

$date = new DateTime("2013-03-05 00:00:00+00");
$date->add("+12 hours");
//then convert back to string or just assign it to a variable within the array node

I was getting back empty values from this method or a similar one I tried

How would you solve this issue?

Thanks, your insight is appreciated

回答1:

Change add() to modify(). add() expects a DateInterval object.

<?php
$date = new DateTime("2013-03-05 00:00:00+00");
$date->modify("+12 hours");
echo $date->format("Y-m-d H:i:sO");

See it in action

Here's an example using a DateInterval object:

<?php
$date = new DateTime("2013-03-05 00:00:00+00");
$date->add(new DateInterval('PT12H'));
echo $date->format("Y-m-d H:i:sO");

See it in action



回答2:

Change this line

$date->add("+12 hours");

with

$date->add(new DateInterval("PT12H"));

this will add 12 hours to your date

Look at the DateInterval constructor page to know how to build the DateInterval string



回答3:

Use this to add hours,

$date1= "2014-07-03 11:00:00";
$new_date= date("Y-m-d H:i:s", strtotime($date1 . " +3 hours"));
echo $new_date;


回答4:

If you have dynamic interval, this way will avoid errors of wrong format for $dateDiff:

$dateDiff = "12 hours";
$interval = DateInterval::createFromDateString($dateDiff);
$date = new DateTime("2013-03-05 00:00:00+00");
$date->add($interval);
echo $date->format("Y-m-d H:i:sO");