2011-03-03 123 views
0

目前我使用这行代码如何从使用PHP的mysql数据库检索并显示时间戳?

echo date("F j Y g:i:s", $row[date]); 

但它只是给我January 1 1970 2:33:31

我也希望它看起来正常的,因为如果我不这样做的date("F j Y g:i:s",可言,我得到的为2011-03-02 23:00:30这是正确的日期,但查询里面一个很变态的方式显示

+0

这个'date'值是如何存储在MySQL中的?整数字段?炭/ VARCHART?日期?约会时间?给出你从PHP返回的内容,它以某种方式返回值为2131的整数,这是1月1/70 2:33:31 – 2011-03-03 21:24:49

回答

5

强制转换为UNIX_TIMESTAMP:

SELECT UNIX_TIMESTAMP(YourDateField) FROM YourTable 

由于我在忽略这个问题时看到了对其他答案的回复,请允许我详细说明:

有两种常见的日期类型。两者实际上都是数字,表示自给定日期以来的持续时间。

  1. 一是自1900年以来的天数(浮点数) 。一天是一天。 分数是当天的一小部分。
  2. 其他是自1970年以来的秒数。这可以是一个int(整秒)或一个浮点数(包括小数秒)。

如果你有第一次约会,但把它当作第二种格式,那么你需要计算几秒钟。自从1900年以来的111年,而不是自1970年以来的111秒。这就解释了为什么你得到这个日期。

因此,请使用UNIX_TIMESTAMP函数,该函数将以秒为单位将第一个浮点表示法转换为时间戳记。这是需要的,因为这也是PHP使用的类型。

+0

的unix时间戳“UNIX_TIMESTAMP()”返回一个纪元日期(自1970年以来的秒数),它可以插入到日期('格式',$ val)“ – 2011-03-03 23:46:02

3

您可能需要使用的strtotime,日期函数预计,第二个参数是一个Unix时间戳

date("F j Y g:i:s", strtotime($row[date])); 

如果你想不同的格式,你可以看看这个页面:Date formatting

你可能想要这样的事情:

date("Y-m-d H:i:s", strtotime($row[date])); 
+0

它只是给了我这个仍然: 01/01/70 1970年1月1日2:00:00 – bzupnick 2011-03-03 21:14:40

+0

尝试var_dump($ row [date] )我认为你没有从你的数据库得到一个有效的日期,也许你应该尝试$ row ['date'](带引号) – Michael 2011-03-03 21:16:20

+0

引号没有帮助,你是什么意思的var_dump?那是做什么的? – bzupnick 2011-03-03 21:19:35

相关问题