更改日期 PHP
Change Date in PHP
我有一个 PHP 书签脚本,我正在使用它从我的书签构建一个 RSS 提要(脚本是 Semantic Scuttle)。 RSS 中的每一项如下所示。
<item>
<title>Technology and the Evolution of the Designer’s Role</title>
<link>https://blogs.adobe.com/creativecloud/technology-and-the-evolution-of-the-designers-role</link>
<guid>http://apps.timpaneeze.com/bookmarks/www/#7</guid>
<description>Today, we often associate design with activities like user experience, graphic and web design, or perhaps fashion and product design. Mass communications and mass production brought with them the need for specific skills in creating posters and products. Each wave of technological change brings with it an evolution in the role and activities that designers undertake.</description>
<dc:creator>bobroberts</dc:creator>
<pubDate>Fri, 27 Jan 2017 00:05:50 +0000</pubDate>
<category>design</category>
</item>
pubdate 与我在系统中实际创建书签的时间不匹配,UI 无法更改。我发现在线建议使用 strtotime($row['bDatetime']) - 60 * 60 * 14
更改时间(一个 post 是 14 小时)。不过,这实际上并没有确定日期。对于某些项目,结果时间是正确的,但对于其他项目则不正确。
我还将 RSS 提要项目拉入 WordPress,时间变得更加复杂。 WP 将该 RSS 项目引入未来发布时间为 2017 年 1 月 26 日,18:05。 WP 安装设置为洛杉矶(太平洋)时区。
所以,快速回顾一下:
- 我在 10:05 Pacific
创建书签
- 书签系统将创建时间标记为05:05同一天
- WP 将在同一天18:05导入
- 使用
strtotime($row['bDatetime']) - 60 * 60 * 5
并不能可靠地修复每个 pubDate
如何使这些匹配?
pubdate中的+0000是key吗?如果是这样,我该如何修改?
pubdate 出现在书签脚本文件中的唯一位置是这里。您可以在最后看到原始行,而我在顶部修复它的失败尝试:
$_pubdate = gmdate('r', strtotime($row['bDatetime']) - 60 * 60 * 14);
/* PSB EDIT Replaced below line with above. */
/* $_pubdate = gmdate('r', strtotime($row['bDatetime'])); */
在聊天室待了一段时间后,问题归结为将 MySQL 日期字符串转换为 RFC822 日期字符串,同时保持正确的时区。这是最终有效的代码:
$timestamp = strtotime($row["bDatetime"]);
if (date("I", $timestamp) == 1) {
$offset = 25200;
} else {
$offset = 28800;
}
$_pubdate = date("r", $timestamp - $offset);
我有一个 PHP 书签脚本,我正在使用它从我的书签构建一个 RSS 提要(脚本是 Semantic Scuttle)。 RSS 中的每一项如下所示。
<item>
<title>Technology and the Evolution of the Designer’s Role</title>
<link>https://blogs.adobe.com/creativecloud/technology-and-the-evolution-of-the-designers-role</link>
<guid>http://apps.timpaneeze.com/bookmarks/www/#7</guid>
<description>Today, we often associate design with activities like user experience, graphic and web design, or perhaps fashion and product design. Mass communications and mass production brought with them the need for specific skills in creating posters and products. Each wave of technological change brings with it an evolution in the role and activities that designers undertake.</description>
<dc:creator>bobroberts</dc:creator>
<pubDate>Fri, 27 Jan 2017 00:05:50 +0000</pubDate>
<category>design</category>
</item>
pubdate 与我在系统中实际创建书签的时间不匹配,UI 无法更改。我发现在线建议使用 strtotime($row['bDatetime']) - 60 * 60 * 14
更改时间(一个 post 是 14 小时)。不过,这实际上并没有确定日期。对于某些项目,结果时间是正确的,但对于其他项目则不正确。
我还将 RSS 提要项目拉入 WordPress,时间变得更加复杂。 WP 将该 RSS 项目引入未来发布时间为 2017 年 1 月 26 日,18:05。 WP 安装设置为洛杉矶(太平洋)时区。
所以,快速回顾一下:
- 我在 10:05 Pacific 创建书签
- 书签系统将创建时间标记为05:05同一天
- WP 将在同一天18:05导入
- 使用
strtotime($row['bDatetime']) - 60 * 60 * 5
并不能可靠地修复每个 pubDate
如何使这些匹配?
pubdate中的+0000是key吗?如果是这样,我该如何修改?
pubdate 出现在书签脚本文件中的唯一位置是这里。您可以在最后看到原始行,而我在顶部修复它的失败尝试:
$_pubdate = gmdate('r', strtotime($row['bDatetime']) - 60 * 60 * 14);
/* PSB EDIT Replaced below line with above. */
/* $_pubdate = gmdate('r', strtotime($row['bDatetime'])); */
在聊天室待了一段时间后,问题归结为将 MySQL 日期字符串转换为 RFC822 日期字符串,同时保持正确的时区。这是最终有效的代码:
$timestamp = strtotime($row["bDatetime"]);
if (date("I", $timestamp) == 1) {
$offset = 25200;
} else {
$offset = 28800;
}
$_pubdate = date("r", $timestamp - $offset);