日期功能显示错误的日期

时间:2013-12-08 12:47:31

标签: php date

我正在尝试使用以下代码在表格中显示日期 现在,假设要显示的日期是2013年12月12日,那么echo $ date1将日期显示为2013-12-12。但echo date("j-F-Y", strtotime($date1));显示日期为1969年12月31日。

<script id="template" type="text/x-handlebars-template">
<table>    
<tr>
    <th>Posted on: </th>
    <td><?php $date1='{{posted}}';echo $date1 ;echo date("j-F-Y", strtotime($date1));?></td>
    </tr>
</table>
</script>

如何显示$ date1中打印的日期。为什么date()无法显示正确的日期。

2 个答案:

答案 0 :(得分:1)

strtotime在失败时返回false或-1(5.1之前)。该时间戳(0)将等于1970-01-01 00:00:00 GMT。在“减去某事”的某个地方,某个时区等于1969-12-31的日期。

因此strtotime($date1)无法解析$date1。你确定它等于字符串'2013-12-12'吗?使用var_dump($date1);进行验证。

它可能是一个带有__toString() - 方法的对象,因此回显会显示该方法的结果,而不是$date1本身的实际值。

答案 1 :(得分:-1)

strtotime方法返回2013-12-12的其他内容,超出预期。见这里:http://www.php.net/manual/de/function.strtotime.php#100144

  

补偿这一点的最佳方法是修改您的加入   字符。正斜杠(/)表示美国M / D / Y格式,a   短划线( - )表示欧洲D-M-Y,句点(。)表示ISO   Y.M.D。

所以你必须在strtotime使用另一种格式。这也解释了为什么date在1970年1月1日之前返回一个值。