将PHP日期时间转换为MySQL RFC-822 RSS Feed的有效日期时间

时间:2011-02-24 02:32:11

标签: php mysql rss

我想将在PHP中创建的日期/时间添加到在RSS Feed中有效的MySQL。

我在PHP中使用

$d = date( 'Y-m-d H:i:s T', time() );
$mysqldate = gmdate(DATE_RSS, strtotime($d));

将其插入我的数据库中的DATETIME字段

但它以Wed, 02 Oct 2002 08:00:00

格式保存

并且它必须采用此格式才能成为RFC-822有效Wed, 02 Oct 2002 08:00:00 EST

6 个答案:

答案 0 :(得分:4)

使用DATE_RFC822代替DATE_RSS

答案 1 :(得分:4)

为什么要将php日期时间转换为字符串,然后再将该字符串转换回datetime对象?这是对cpu周期的严重浪费。为什么不简单地做

$mysqldate = gmdate(DATE_RSS, time())?

同样,gmdate生成一个UTC时间戳,没有时区 - 它总是GMT + 0

答案 2 :(得分:3)

答案非常简单,只需使用以下格式:

<pubDate>'.date('r', strtotime($rss_row['your_date_field'])).'</pubDate>

原始回声是:

echo date('r', strtotime($my_date));

这将从我们的MySQL表中转换日期时间,其格式为:YYYY-MM-DD HH:MM:SS并将其转换为代表相同日期的UNIX字符串。

一旦我们这样做到了我们的日期,我们就拥有了date()函数的众多奇迹。进入那么多奇迹不仅仅是我要进入这里,但我已经在这里发布了它。

在这种特殊情况下,将'r'参数添加到date()函数可以完成将UNIX字符串重新格式化为RSS提要日期格式的所有工作。

就这么简单。

答案 3 :(得分:1)

将内容保存到MySQL DATETIME字段时,无法指定格式。 DATETIME以内部格式存储,仅与时间值有关,而与格式无关。你总是需要按照你需要的方式格式化日期 之后(或同时)从数据库中检索它:

date(DATE_RSS, strtotime($dateFromDatabase));

要在数据库中插入日期,您只需要以MySQL理解的格式提供日期,然后将其转换为所述内部格式,格式将丢失:

sprintf("INSERT INTO `foo` (`date`) VALUES('%s')", date('Y-m-d H:i:s'))

答案 4 :(得分:1)

date('r', strtotime($object->pubDate))

-works nice

答案 5 :(得分:0)

实际上DATETIME字段不会保存有关时区的任何信息(http://dev.mysql.com/doc/refman/5.1/en/datetime.html)。

因此,您需要在从数据库中提取日期后附加时区。