在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'
答案 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日。
拼写month
或months
将解决您的错字。
为清楚起见,您无需分配所有这些归零间隔。
以下是一些有关修改时间数据的不同方式的有益参考。