日期/时间在PHP中显示奇数值

时间:2013-01-14 19:22:23

标签: php date formatting

今年我在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

我很困惑,因为我很确定我的代码是正确的。

我敢于你解决这个问题!

3 个答案:

答案 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