2010-05-11 48 views

回答

4

难道是选项来使用PHP函数来生成一个Unix时间戳(即自Unix Epoch以来的秒数),然后让MySQL从那里处理它?

PHP: - PHP Documentation

$timestamp = strtotime('Sat, 07 Sep 2002 09:42:31 GMT'); // = 1031391751 

MySQL的: - MySQL Documentation

... `timestamp` = FROM_UNIXTIME(1031391751) ... 
+0

不知道为什么这比阿利克斯的答案少得多的票数 - 这并没有解决问题以及这个问题。 – symcbean 2010-05-20 11:02:09

2

MySQL Manual

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

RSS 2.0 specification指出:

所有日期时间在RSS符合RFC 822的 日期和时间规范,所不同的是今年 可以与两个字符 表示或四个字符(首选四个)。


所以,如果我们有如下的RSS日期:

$timeRSS = 'Sat, 07 Sep 2002 09:42:31 GMT'; // RFC 822 

我们需要做以下将其转换为MySQL的TIMESTAMP格式:

date_default_timezone_set('GMT'); // make sure we are using the same timezone 
date('Y-m-d H:i:s', strtotime($timeRSS)); // 2002-09-07 09:42:31 
+0

从我还记得,在日的 “R” 格式()输出符合RFC2822,日期时间;可能比指定它稍微容易一些... – 2010-05-17 13:41:38

+0

@Matt:'date('r')'='Thu,2000年12月21日16:01:07 + 0200',这与MySQL'TIMESTAMP'格式不兼容。 – 2010-05-17 23:23:22

+0

对不起,我喝醉了我的咖啡之前,我清楚地阅读,并跳过一两行。 – 2010-05-18 08:40:24