从Postgres timestamptz添加间隔字符串时,PHP DateTime出现意外结果

时间:2018-12-14 07:43:13

标签: php datetime

在DateTime输入字符串中添加间隔时,得到的结果不正确。

有些字符串有效,有些则无效。显然,添加零不应将结果放在未来5天并缩短时间。 kes。

$dtTestStr='2018-09-05 10:25:00-04 + 0 year 0 mon 0 day 00:00:00';
$myFubar=new DateTime($dtTestStr);
echo $dtTestStr. ' is now '.$myFubar->format('Y-m-d H:i:s');

// '2018-09-05 10:25:00-04 + 0 year 0 mon 0 day 00:00:00 is now 2018-09-10 00:00:00'

2 个答案:

答案 0 :(得分:1)

首先,您需要使用“ month”或“ months”而不是“ mon”,一旦消除了该问题,就会出现另一个错误。它不知道该如何处理这些零。我还在回显语句的末尾删除了一个额外的)。

您希望它看起来像这样:

$dtTestStr='2018-09-05 10:25:00-04 + 0 year 0 months 0 day 0 hour 0 minute 0 seconds';
$myFubar=new DateTime($dtTestStr);
echo $dtTestStr . ' is now ' . $myFubar->format('Y-m-d H:i:s');

这是一个沙盒链接:Sandbox

答案 1 :(得分:1)

DateTime类认为您要求的是2018年9月5日之后的星期一(mon)。下一个星期一是10日。

拼写monthmonths将解决您的错字。

为清楚起见,您无需分配所有这些归零间隔。

以下是一些有关修改时间数据的不同方式的有益参考。

Adding minutes to date time in PHP