strtotime转换不一致


Inconsistent strtotime conversions

使用strtotime对日期进行转换时,会得到不一致的结果。

数组[0]保存要转换的日期:

Original -> converted -> converted back
Array ([0] => 30.01.15) -> 1422576000 -> GMT: Fri, 30 Jan 2015 00:00:00 GMT
Array ([0] => 23.01.15) -> 1427925675 -> GMT: Wed, 01 Apr 2015 22:01:15 GMT

当使用破折号而不是点时,我得到:

Array ([0] => 30-01-15) -> 1894665600 -> GMT: Tue, 15 Jan 2030 00:00:00 GMT
Array ([0] => 23-01-15) -> 1673740800 -> GMT: Sun, 15 Jan 2023 00:00:00 GMT

它在第一种情况下有效,使用点,但在第二种情况下使用点,我得到今天的日期?有什么想法可能导致这种不一致吗?

根据PHP手册,日期和时间必须以支持的日期/时间格式提供:http://php.net/manual/en/datetime.formats.date.php

日期值似乎不支持"点"表示法,所以PHP试图将其解析为时间,这就是为什么会出现这种"奇怪"的行为。

为了更好地解释不同的行为:在第一次运行中,30不能被解释为小时值,所以PHP尝试进行日期解析,在第二次运行时,23这是一个合理的小时值,因此它会随着时间而变化。

"日期、月份和两位数年份,带点或制表符"格式(dd[.''t]mm"."yy)仅适用于年份值61(包括61)至99(包括99)-在这些年份之外,时间格式"HH[.:]mm[.:]SS"优先于

PHP似乎正在以不同的格式解释日期。

Array ([0] => 30.01.15) -> 1422576000 -> GMT: Fri, 30 Jan 2015 00:00:00 GMT

正在将日期读取为DD.MM.YY

Array ([0] => 30-01-15) -> 1894665600 -> GMT: Tue, 15 Jan 2030 00:00:00 GMT

正在将日期读取为YYY-MM-DD

尝试将其更改为:

Array ([0] => 15-01-30)