我想将在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
答案 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)。
因此,您需要在从数据库中提取日期后附加时区。