我正在使用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客户端的回复,认为它格式不正确。
那么你怎么会把$ thetime更改为iso.8601格式,因为我认为这是'c'的作用?我做错了吗?
答案 0 :(得分:3)
首先,验证输出的字符串并确保输出符合您的预期。那里可能存在一个完全不相关的错误(例如忘记的调试echo
)。
某些实现可能要求日期为UTC时间。只需使用gmdate
代替date
,最后添加Z
:
$content['date_created'] = gmdate('Y-m-d\\TG:i:s\\Z', strtotime($thetime)) . 'Z';
答案 1 :(得分:0)
根据XMLRPC specifications,此标记<dateTime.iso8601>
中定义了日期时间
并有这种格式19980717T14:08:55。所以完整的标签看起来像这样
<dateTime.iso8601>20090322T23:43:03</dateTime.iso8601>
这是使用php xmlrpc_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>