我将名为postDate
的列定义为时间戳。
当我直接打印它时:
echo $result['postDate'];
我确实得到了存储的内容(例如2011-03-16 16:48:24
)
另一方面,当我通过日期功能打印它时:
echo date('F/j/Y',$result['postDate'])
我得到December/31/1969
我做错了什么?
非常感谢答案 0 :(得分:58)
试试这个。
date('F/j/Y',strtotime($result['postDate']));
需要时间戳,而不是格式化日期作为第二个参数。 或者您也可以尝试
SELECT UNIX_TIMESTAMP(postDate) as postDateInt from myTable
而不是SELECT postDate from myTable
然后在你的代码中使用它。
date('F/j/Y',$result['postDateInt']);
答案 1 :(得分:9)
PHP date函数查找int time()
作为第二个参数。尝试使用strtotime()
echo date('F/j/Y', strtotime($result['postDate']) );
答案 2 :(得分:7)
为什么不在MySQL查询中根据需要格式化日期?
SELECT DATE_FORMAT(postDate, '%M/%D/%Y') as date from table
答案 3 :(得分:0)
PHP`date()'函数需要第二个参数的数字 - 即unix时间戳。
您可以使用strtotime()
函数将SQL日期字符串(或几乎任何其他日期字符串)转换为PHP中的时间戳。至少有两个其他答案已经提出了这个建议。
但是,我建议你最好先用unix时间戳格式从数据库中获取日期。您可以通过使用MySQL UNIX_TIMESTAMP()
函数查询来执行此操作,如下所示:
SELECT UNIX_TIMESTAMP(mydatefield) AS mydatefield_timestamp FROM mytable
..显然,适当地替换字段和表名。
然后,您将在PHP中返回的数据集中以时间戳格式获取日期,您可以直接将其传递到date()
函数,如下所示:
echo date('F/j/Y',$result['mydatefield_timestamp']);
希望有所帮助。