今年我在PHP中遇到了时间/日期问题。代码根本没有改变,我的日期被窃听。
代码例如:
$date = strtotime($order['date']);
$dateNew = date('Y-m-d h:i A', $date);
print $dateNew;
为某些reasson返回1969-12-31 07:00 PM
,altough:
print $order['date'];
返回2013-01-12 18:25:43
我很困惑,因为我很确定我的代码是正确的。
我敢于你解决这个问题!
答案 0 :(得分:1)
函数strtotime()用于将英语转换为日期格式。
该函数期望给出一个包含英文日期格式的字符串,并尝试将该格式解析为Unix时间戳(自1970年1月1日00:00:00 UTC以来的秒数),相对于给定的时间戳。现在,或者现在没有提供当前时间。
由于我不知道你的$ order变量究竟是什么,我会建议2个解决方案:
也许你可以避免使用strtotime函数并将其直接替换为date():
$order = ['date' => '2013-01-12 18:25:43'];
$date = date($order['date']);
这里效果很好:http://codepad.viper-7.com/cbNA87
或者,如果它不起作用,请考虑使用mktime(),它会将日期转换为自纪元以来的秒数。
Unix纪元是所有时间戳的参考点。 PHP以秒为单位计算此日期的时间。
$date
应为null,并且您的服务器位于美国东海岸,因此它将返回时代:)
答案 1 :(得分:1)
当没有合适的日期时,PHP返回日期1969-12-31。所以,如果你做了
$date = 0;
$dateNew = date('Y-m-d', strtotime($date));
您的结果将是1969-12-31,因为这是默认的Unix纪元时间。 http://php.net/manual/en/function.time.php
答案 2 :(得分:1)
“1969-12-31 07:00 PM”的意外日期表示date()出错。
你的strototime($ order ['date'])可能返回false(未能将其解析为unix时间戳)。
试试这个并确保它返回一个int(非假)
var_dump($order['date'], strtotime($order['date']));
查看日期的错误状态:http://php.net/date 请参阅strtotime的返回值:http://php.net/strtotime