PHP strtotime认为24h输入是12h?

时间:2017-07-31 10:22:45

标签: php datetime timezone timestamp strtotime

strtotime('31.07.2017 08:17')输出1501478160正好 12h 之前(31.07.2017 08:17 pm UTC + 02:00)但既然是我给它的军事时间,那么早上它应该是 08:17

我已正确设置所有time zones 我在这里错过了什么?如何告诉strtotime我想以24小时格式给出时间?

由于

2 个答案:

答案 0 :(得分:0)

strtotime涉及一些猜测,以弄清楚你的输入意味着什么。我自己测试了它并获得08:17(AM),因此区域设置可能与它有关。

无论如何,如果您知道格式,那么您应该更喜欢DateTime::createFromFormat()并准确地告诉它:

$dt = DateTime::createFromFormat('!d.m.Y H:i','31.07.2017 08:17');

您现在可以使用该对象执行各种操作,并最终:

echo $dt->format('Y-m-d\TH:i:s'); // or whatever format you want

答案 1 :(得分:0)

只需替换

strtotime('31.07.2017 08:17');

strtotime('31.07.2017 08:17PM'); 

再次检查。
只需在字符串

中提及 AM PM