Notes: AppleScript による XML-RPC で、受信した日付情報が勝手に変更される


ひとつ前の記事 でご紹介した対策を施しても、Kaku での WordPress の記事の日付表示が一向に直らないので、さらに調べてみたところ、AppleScript で行う XML-RPC で受信した日付情報がおかしくなってしまう不具合を見つけました。

問題

  • (舞台裏での XML データの受信は問題ないようだが、)受信した XML データを AppleScript 内で使えるよう変換を行う際、すべての日付情報("«data isotXXXX...»" という形のデータ。中身は ISO 8601 形式)に、UTC であることを表すためのタイムゾーン指定子 Z を付加してしまう。
  • かと言って、前述の記述情報を date 型に変換("... as date")しても、UTC の指定が考慮されるわけではなく、ローカルタイムとして(Z が付いていないときと同じように)扱われる。

対策

  • 直接的なものはない。XML-RPC に AppleScript を使わないようにするしかない。

date 型に変換したとき UTC の指定が考慮されないのはまだしも(もともとそんなのには対応していなさそうだし)、isot が受信されたデータを忠実に保持してさえいてくれれば、文字列に変換して、いくらでも処理できるのですが…。もとの情報は正確に送られてきている(後述)ので、もったいない不具合です。

以下では、(ここまで読めば分かる人もいるかもしれませんが)なぜ WordPress だけ直らないのかを説明しておきます。

なぜ WordPress の記事の日付表示だけ直らないのか

ブログクライアントソフトに日付情報を返すとき、WordPress は UTC で、Movable Type や P_BLOG は(たぶん)サーバーのある場所のローカルタイムで返します。

これらのうち複数のブログシステムを使っておられる方は、ecto で ウィンドウ →「コンソール」 を開いて(あるいは MarsEdit で Windiow →「RPC Console」)、WordPress と、Movable Type/P_BLOG の記事を再読み込みして、表示されるデータのうち、どこかにある「timeDate.iso8601」と書かれている部分をそれぞれ比較してみてください。WordPress のときは、最後に Z がついて おり、Movable Type/P_BLOG のときには ない ことが分かると思います。

次に、Kaku で 環境設定パネル →「一般」タブ → 「ログを出力する」を有効にして、「コンソール.app」を見ながら、同様に記事の読み込みを試してみると、WordPress に関しては変わらず、Movable Type/P_BLOG に関しては、本来ついていないはずの Z が付加されている ことが分かります。

しかし、最初に書いた通り、AppleScript では、これらは すべてローカルタイムとして扱われます。結果として、WordPress の記事に関しては、実際より9時間遅い 表示に(UTC と日本時間との差が考慮されなかったため)、Movable Type/P_BLOG は、Z が付加されているのに UTC の日付として処理されないので、(なんとか)事なきを得ています。

ちなみに、Kaku の紹介ページ →「使い方」タブ → 「トラブルシューティング」で書いた方法で確認すると、受信した生データには異常がない ことが分かると思います。

…つまり、Kaku ではこれまで一度もまともに日付情報を認識できていなかったということ(涙) これを解決するには、根本的な変更が必要ですが、それには困難が伴うので、まだ放置しておこうと思っています…。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です