6

string我的 php 数组中有这个对象

“2013-03-05 00:00:00+00”

我想在 PHP 中的条目中添加 12 小时,然后以相同的格式将其保存回字符串

我相信这涉及将字符串转换为日期对象。但我不确定日期对象有多聪明,以及是否需要告诉它格式化参数,或者它是否应该只接受字符串

$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

我从这种方法或我尝试过的类似方法中取回了空值

你会如何解决这个问题?

谢谢,感谢您的见解

4

4 回答 4

21

更改add()modify()add()需要一个 DateInterval 对象。

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

看到它在行动

下面是一个使用 DateInterval 对象的示例:

<?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");

看到它在行动

于 2013-03-05T16:20:28.603 回答
2

更改此行

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

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

这将使您的约会时间增加 12 小时

查看DateInterval 构造函数页面以了解如何构建DateInterval字符串

于 2013-03-05T16:28:34.713 回答
2

用它来增加时间,

$date1= "2014-07-03 11:00:00";
$new_date= date("Y-m-d H:i:s", strtotime($date1 . " +3 hours"));
echo $new_date;
于 2014-07-12T02:20:48.400 回答
0

如果您有动态间隔,这种方式将避免 $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");
于 2017-02-21T09:17:51.147 回答