将日期格式化为 iso.8601

发布于 2024-12-21 22:24:06 字数 504 浏览 1 评论 0原文

我正在使用 wordpress XMLRPC 将一些未来的帖子发布到我的博客,但我遇到了一些日期格式问题...基本上让自己都混乱了:)

所以我设置了“未来”发布日期。没关系。

$thetime = date("Y-m-d H:i:s", strtotime("+ $number days", strtotime(date("Y-m-d H:i:s"))));

($thetime 回显了我要拍摄的日期 - 所以这里一切都很好)

但是 wp 客户端想要 ISO.8601 格式的日期。所以我这样改变了它:

$content['date_created'] = date( 'c', strtotime($thetime) );

但是我从 xml-rpc 客户端得到了它的格式错误的响应。

那么,既然我认为这就是“c”的作用,那么您将如何将 $thetime 更改为 iso.8601 格式呢?我做错了什么吗?

I'm working with the wordpress XMLRPC to post some future posts to my blog, but I'm running into some issues with date formatting... basically got myself all discombobulated :)

So I've set up the "future" post date. It's just fine.

$thetime = date("Y-m-d H:i:s", strtotime("+ $number days", strtotime(date("Y-m-d H:i:s"))));

($thetime echos out the date i'm shooting for - so all is well here)

But the wp client wants the date in ISO.8601 format. So I changed it this way:

$content['date_created'] = date( 'c', strtotime($thetime) );

But I'm getting a response from the xml-rpc client that it's malformed.

So how would you go about changing $thetime to iso.8601 format since I thought that's what 'c' does? Am I doing something wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

与之呼应 2024-12-28 22:24:06

首先,验证输出的字符串并确保输出是您所期望的。其中可能存在完全不相关的错误(例如忘记调试echo)。

某些实现可能要求日期采用 UTC 时间。只需使用 gmdate 而不是 date,并添加 < a href="http://en.wikipedia.org/wiki/Zulu_time" rel="nofollow">Z 在末尾:

$content['date_created'] = gmdate('Y-m-d\\TG:i:s\\Z', strtotime($thetime)) . 'Z';

First, verify the outputted string and make sure that the output is what you expect. There may be a completely unrelated bug (for example a forgotten debugging echo) in there.

Some implementations may require the date to be in UTC time. Simply use gmdate instead of date, and add a Z at the end:

$content['date_created'] = gmdate('Y-m-d\\TG:i:s\\Z', strtotime($thetime)) . 'Z';
罗罗贝儿 2024-12-28 22:24:06

根据 XMLRPC 规范,datetime 在此标签中定义< /代码>
格式为 19980717T14:08:55。所以完整的标签看起来像这样
20090322T23:43:03

这是使用phpxmlrpc_encode_request()函数时常见的错误,不会自动转换日期。而是使用 xmlrpc_set_type() 函数。

<?php

$params = date("Ymd\TH:i:s", time());
xmlrpc_set_type($params, 'datetime');
echo xmlrpc_encode($params);

?>

上面的示例将输出类似以下内容的内容:

<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <dateTime.iso8601>20090322T23:43:03</dateTime.iso8601>
 </value>
</param>
</params>

According to XMLRPC specifications, datetime is defined in this tag <dateTime.iso8601>
and has this format 19980717T14:08:55. So the complete tag looks like this
<dateTime.iso8601>20090322T23:43:03</dateTime.iso8601>

This is the common mistake when using php xmlrpc_encode_request() function, which does not automatically convert date. Rather use xmlrpc_set_type() function.

<?php

$params = date("Ymd\TH:i:s", time());
xmlrpc_set_type($params, 'datetime');
echo xmlrpc_encode($params);

?>

The above example will output something similar to:

<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <dateTime.iso8601>20090322T23:43:03</dateTime.iso8601>
 </value>
</param>
</params>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文