rn_xmlrpc.php を修正 2018-12-10 (月) 02:43:56+09:00

ソフトウェア

日時指定での投稿時の動作の修正をした。

これまでは、 XML-RPC の規格に沿って、 metaWeblog API newPost, editPost の dateCreated ( ISO 8601 形式)に UTC 、タイムゾーンが付加されずに送信されることを前提に、送信されてきた dateCreated に無条件で “Z” を付加し UTC であることを明示していた。

しかし、

そこで、 ISO 8601 形式のバリデーションの方法を参考にしながら、 rn_xmlrpc.php を対応させた。

現在の動作は、

ISO 8601 形式(基本形式、拡張形式、混在形式)( UTC 、タイムゾーンなし)⇒UTC形式として処理し表示。

ISO 8601 形式(基本形式、拡張形式、混在形式)( UTC またはタイムゾーンあり)⇒タイムゾーンを処理し表示。

となった。

Windows/Open Live Writer が dateCreated に ISO 8601 規約違反の形式(YYYYMMDDThh:mm:ss)で日時を送ってくるので、やむを得ずその形式(混在形式)にも対応させた。


Windows Live Writer および Open Live Writer で、公開日付指定で記事を投稿した際に、 metaWeblog API newPost, editPost で送信されてくる dateCreated ( dateTime.iso8601 ) の形式は:

<member>
  <name>dateCreated</name>
  <value>
    <dateTime.iso8601>20181209T12:00:00</dateTime.iso8601>
  </value>
</member>
<member>
  <name>date_created_gmt</name>
  <value>
    <dateTime.iso8601>20181209T12:00:00</dateTime.iso8601>
  </value>
</member>

のような表記となっている。

しかし、メモに投稿しておいた「ISO 8601 規格について」通り、 ISO 8601 規格では日付の基本形式である[20181209]と時刻の拡張形式である[12:00:00]は混在させてはならないので、この形式は規格に違反している。

日付の形式に合わせるならば、[20181209T120000]とするのが正しい。