我已经使用相同的代码 PHP 5.x 5 年多了,突然我遇到了 strtotime 和 UK 日期格式的问题。我写了这个小脚本来测试:
<?php
echo "<br /><b>PostDate: 1-7-15</b>";
$format="d-m-y";
$date="1-7-15";
$c = strtotime($date);
echo "<br /><b>Unix TS: - ".$c."</b>";
$a = date($format,$c) ;
echo "<br /><b>Unix TS to date - ".$a."</b>";
echo "<br /> <br />";
echo "<br /><b>PostDate: 7/1/15</b>";
$format="m/d/y";
$date="7/1/15";
$c = strtotime($date);
echo "<br /><b>Unix TS: - ".$c."</b>";
$a = date($format,$c) ;
echo "<br /><b>Unix TS to date - ".$a."</b>";
?>
这个输出:
PostDate: 1-7-15
Unix TS: - 995173200
Unix TS to date - 15-07-01
PostDate: 7/1/15
Unix TS: - 1435726800
Unix TS to date - 07/01/15
你可以清楚地看到英国版不正确,美国版是正确的。英国版本未正确转换为 Unix 时间戳。
就像我之前说的,多年来我一直以这种方式使用 strtotime,突然出现这些结果?我是不是疯了?
最佳答案
我改了行:
$c = strtotime($date);
收件人:
$c=strtotime(date($format, strtotime($date)));
它适用于所有日期格式,甚至 d M y。好奇怪……
关于PHP 5.x strtotime 无法正确解析英国格式 d-m-y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38407160/