不一致的strtotime转换

时间:2015-04-01 13:48:18

标签: php date epoch

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

array [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

它在第一个实例中使用点,但在第二个使用点我得到今天的日期?可能导致这种不一致的任何想法?

2 个答案:

答案 0 :(得分:1)

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

" dot"日期值似乎不支持表示法,因此PHP会尝试将其解析为时间,这就是为什么你得到这个"奇怪的"行为。

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

  

"日,月和两位数年份,带点或标签"格式(dd [。\ t] mm"。" yy)仅适用于年份值61(含)到99(含) - 在这些年份之外的时间格式" HH [。: ] MM [。:] SS"优先

答案 1 :(得分:0)

看来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

将日期读作YY-MM-DD

尝试将其更改为:

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