【问题标题】:Google Sitemap Date Format谷歌站点地图日期格式
【发布时间】:2012-07-31 14:21:08
【问题描述】:

我需要 php 中站点地图的日期格式。

我该怎么做?

这个输出对吗?

<lastmod>2012-08-02EEST18:01:18+03:00</lastmod>

【问题讨论】:

  • 你的意思是被机器人抓取的站点地图吗?

标签: php sitemap date-format


【解决方案1】:

如果你有时间戳,你可以像这样正确地格式化日期:

<lastmod><?php echo date('c', $timestamp); ?></lastmod>

时间戳可以是time()(当前时间)或其他获取unix tiemstamp 的方法,例如strtotime()

【讨论】:

  • 我正在从数据库中接收 lastmod 数据。它是日期时间格式。我正在使用 strtotime 进行转换。如果类型对谷歌来说是正确的,它就可以工作。谢谢。
【解决方案2】:

要以 W3C 日期时间编码(在 sitemap.xml 文件中使用)格式化当前时间戳,请使用以下参数。

echo date('Y-m-dTH:i:sP', time());

从 PHP5 开始,您还可以使用 c 格式字符来打印完全相同的字符串。

echo date('c',time());

这些都会打印出以下内容:

2009-04-03T11:49:00+01:00

SOURCE

【讨论】:

  • 您给出的日期字符串是@user1329212 的问题。我已经发布了正确的字符串作为答案。
  • @AdamJones 和@NXT 的答案是正确的:如果您使用日期格式字符串Y-m-dTH:i:sP,则需要转义T,即Y-m-d\TH:i:sP。但是使用 PHP5 选项 date('c',time()) 效果很好。
  • @FluffyKitten 为我工作我遇到了“T”字符的问题,通过转义解决了问题!谢谢!
【解决方案3】:

要将 MySQL 的日期时间格式转换为站点地图中 lastmod 所需的格式,只需使用下面的 PHP 代码。

$lastmod = '2012-11-28 10:53:17'; //MySQL datetime format

$datetime = new DateTime($lastmod);
$result = $datetime->format('Y-m-d\TH:i:sP');

echo $result; //2012-11-28T10:53:17+01:00

【讨论】:

  • 可以使用更短的格式$result = $datetime-&gt;format('c');。 `
【解决方案4】:

According to Google,他的值是可选字段,如果提供,必须格式化为

YYYY-MM-DDThh:mmTZD 

SQL 日期时间的默认导出为dependent on the language setting for your server,并且可能包含空格和特征 TZD,例如:

2014-09-19 10:33:05 UTC

The W3 specify TZD 可以用三个选项中的任何一个来格式化

TZD = 时区指示符(Z 或 +hh:mm 或 -hh:mm)

必须删除默认格式中的任何空格;字符“T”必须在时间之前插入,并且 TZD 必须与支持的类型之一匹配。

因此,要格式化当前时间戳,请使用以下参数。

echo date('Y-m-dTH:i:sP', time());

从 PHP5 开始,您还可以使用 c 格式字符来打印完全相同的字符串。

echo date('c',time());

【讨论】:

    【解决方案5】:

    我知道这个问题是关于 PHP 的,但我发现这个页面在谷歌上搜索 Node/JavaScript。所以最接近的等价物是Date.toISOString()

    var d = new Date();
    d.toISOString(); // "2017-04-19T07:23:16.040Z"
    

    【讨论】:

    • 如果在 SO 上没有针对 javascript 版本的问答,您应该考虑将此作为新问题添加给也在搜索此内容的其他用户!见Answering your own question
    【解决方案6】:

    你得到这个输出是因为你使用了旧的推荐的时间戳字符串

    Y-m-dTH:i:sP.
    

    然而,你需要的是

    Y-m-d\TH:i:sP
    

    这个单反斜杠会有所作为。在某些时候,大写的 T 成为 PHP 中表示时间码的特殊字符,因此如果您不转义 T,您将得到您的报告。

    【讨论】:

      【解决方案7】:

      You have a lot of formats to choose from。将c 参数与date() 函数一起使用将为您获得推荐的格式。

      【讨论】:

        【解决方案8】:

        实际上,有两种方法。

        第一种方法是为 XML 站点地图设置一个有效日期,其中包含给出值的“C”字符:(2019-06-03T17:30:21-05: 00)Test it here

        &lt;lastmod&gt;'.date('c', strtotime($row['date'])).'&lt;/lastmod&gt;

        第二种方法是为 RSS 站点地图设置一个有效日期,其中包含给出值的“r”字符:(2019-03-07T17:55:44+00: 00).

        &lt;pubDate&gt;'.date('r', strtotime($row['date'])).'&lt;/pubDate&gt;

        希望这对您有所帮助。谢谢

        【讨论】:

          【解决方案9】:

          删除“EES” 我的是这样的 2013-12-26T19:00:00-05:00 它有效 http://www.industry-automation-parts.com/1_e_0_sitemap.xml

          【讨论】:

            【解决方案10】:

            使用moment.js;

            moment().format('YYY-MM-DDTHH:mm:ssZ')
            

            【讨论】:

            • 您能进一步解释一下吗?我不认为 moment.js 毕竟可用于 PHP
            猜你喜欢
            • 2016-01-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-02
            • 2011-04-17
            • 1970-01-01
            相关资源
            最近更新 更多