2011-03-17 93 views
21

我有列名为postDate定义为时间戳。 当我直接打印:格式mysql使用php的时间戳

echo $result['postDate']; 

我做得到,什么是存储 在另一方面,当我打印通过日期的功能(例如2011-03-16 16:48:24):

echo date('F/j/Y',$result['postDate']) 

我得到December/31/1969

我在做什么错?

非常感谢

回答

56

试试这个。

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']); 
+0

不错的提示,使它工作 – 2011-03-17 13:06:48

+0

嗯,做得好你打我一拳。为你+1。我还推荐UNIX_TIMESTAMP()。当我开始我的答案时,你只有strtitime(),但是当我发布它时,你还添加了SQL位。 – Spudley 2011-03-17 13:15:24

+0

伟大的思想想象一样... hi5 @Spudley – DhruvPathak 2011-03-17 13:18:10

8

的PHP date函数查找一个int time()作为第二PARAM。尝试使用strtotime()

echo date('F/j/Y', strtotime($result['postDate'])); 
+0

这是有用的知道,非常感谢 – 2011-03-17 13:07:09

0

的PHP`日期()”功能预计用于第二参数的数目 - 即一个Unix时间戳。

您可以使用strtotime()函数将SQL日期字符串(或几乎任何其他日期字符串)转换为PHP中的时间戳。至少有两个其他答案已经提出这个建议。

但是,我建议你最好先将数据以unix时间戳格式从数据库中取出。您可以通过使用MySQL UNIX_TIMESTAMP()功能查询做到这一点,如下所示:

SELECT UNIX_TIMESTAMP(mydatefield) AS mydatefield_timestamp FROM mytable 

..obviously,取代了字段和表名作为合适的。

然后你会得到时间戳格式日期在PHP中,你返回的数据集,你可以直接进入date()功能如下:

echo date('F/j/Y',$result['mydatefield_timestamp']); 

希望有所帮助。

6

为什么不根据需要在MySQL查询中格式化日期?

SELECT DATE_FORMAT(postDate, '%M/%D/%Y') as date from table 
+0

这似乎是迄今为止最简单的解决方案:D – 2016-12-17 01:47:48