2010-04-26 100 views
1
$sql = "SELECT * FROM news ORDER BY `news_id` DESC LIMIT 1"; 
$result = mysql_query($sql) or die(mysql_error()); 
$row = mysql_fetch_assoc($result); 
$date = $row['time_posted']; 
echo "<i> " .date("Y/m/d", $date) . "</i>: "; 

我在mysql中使用了timestamp。date()显示1969年12月

+1

'time_posted'的字段类型是什么?在把它扔到'日期'函数之前,你甚至检查过它的值吗? – zneak 2010-04-26 01:29:54

+0

@zneak'timestamp' – Strawberry 2010-04-26 01:36:54

回答

4
date('Y/m/d', strtotime($date)); 

TIMESTAMP列不显示为UNIX时间戳(再)。

TIMESTAMP列以与DATETIME列相同的格式显示在 中。换句话说,显示宽度为 固定为19个字符,格式 为'YYYY-MM-DD HH:MM:SS'。

+5

换句话说,要扩大。你已经从MySQL中检索“2010-04-25 19:36:05”,并直接将它传递给PHP。 'date()'期待一个数字值,所以这个字符串是无效的,并被视为NULL,将其转换为0,并将其转换为时期,并根据您的时区进行调整。你在格林威治的西部,所以你在当地时间'0'是在1969年的某个地方。 – 2010-04-26 01:39:01

+0

@Marc - 一个真正的Rube Goldberg事件链。很好的解释。 – 2010-04-26 02:09:48

0

UNIX时代是在1970年1月1日正午的UTC。如果你住在后面UTC时区,时间戳0将在12月31日晚上的某个时候出现,1969年($date是最有可能0)

+0

...或非数字。 – zneak 2010-04-26 01:33:13

+0

如果您给它一个非数字变量,'date()'会发出警告。 – 2010-04-26 01:35:19

+0

'date()'_notices_当你给它一个非数字变量并且假设为0.大多数设置(不幸的是)忽略通知。 – zneak 2010-04-26 01:39:13

相关问题