Hatena::Groupmoz-addon

there.is.only.memo

2008-04-17

YYYY-MM-DDThh:mm:ssZ 形式の日付の処理

| 22:33

Firefox 3 等では YYYY-MM-DDThh:mm:ssZ 形式の日付の処理に ISO8601DateUtils.jsm が使えます。

コメントによると以下の事ができるようです。

  • YYYY-MM-DDThh:mm:ssZ 形式等の文字列を Date オブジェクトに変換 (ISO8601DateUtils.parse)
  • Date オブジェクトを YYYY-MM-DDThh:mm:ssZ 形式の文字列に変換 (ISO8601DateUtils.create)

ISO8601DateUtils.create を使えば Atom の updated 要素に突っ込めるものを簡単に作ることができる! はず。

以下は xpcshell で触ってみた例です

js> Components.utils.import("resource://gre/modules/ISO8601DateUtils.jsm");
[object BackstagePass]
js> ISO8601DateUtils.create(new Date);
20080417T12:15:55Z

あれ…。YYYYMMDDThh:mm:ssZ 形式で返ってきています。

ソースコードをみると

// YYYY-MM-DDThh:mm:ssZ
var result = zeropad(myDate.getUTCFullYear (), 4) +
             zeropad(myDate.getUTCMonth () + 1, 2) +
             zeropad(myDate.getUTCDate (), 2) + 'T' +
             zeropad(myDate.getUTCHours (), 2) + ':' +
             zeropad(myDate.getUTCMinutes (), 2) + ':' +
             zeropad(myDate.getUTCSeconds (), 2) + 'Z';
return result;

コメントとコードがあっていません。

Atom 1.0 は上記のパターンを認めるか

Atom 1.0 の仕様によると updated 要素の内容は atomDateConstruct となっています。

atomUpdated = element atom:updated { atomDateConstruct }

atomDateConstruct は以下のとおり。

atomDateConstruct =
   atomCommonAttributes,
   xsd:dateTime

atomCommonAttributes は属性の定義なので今は無視します。

xsd:dateTime は XML Schema Part 2: Datatypes Second Edition によると 以下のとおり。

'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?

区切り文字必須。なので ISO8601DateUtils.create で作った文字列を Atom 1.0 に突っ込むのはまずいです。

まとめ

「オレのバグじゃなくて、ISO8601DateUtils.jsm のバグ」(上野氏)

追記 1

2008 年 4 月 23 日追記: 429492 - Cleanup ISO8601DateUtils.jsm で drry さんがこの問題も含め、ISO8601DateUtils.jsm のクリーンアップに取り組んでいます。

JaneseJanese 2011/08/08 02:56 That's way the bestest anwesr so far!

obzcywjobzcywj 2011/08/09 03:42 JiyNDS <a href="http://nlykcchkozfv.com/">nlykcchkozfv</a>

ytfsciytfsci 2011/08/09 21:38 98W7Hi , [url=http://gcpkwuhybrmh.com/]gcpkwuhybrmh[/url], [link=http://wndceruhrpsj.com/]wndceruhrpsj[/link], http://mggmmykdctlr.com/

qjxrrqqjxrrq 2011/08/10 23:46 B17Ujd <a href="http://rntgbunevfee.com/">rntgbunevfee</a>

qghstqbuqghstqbu 2011/08/15 02:07 T395BS , [url=http://dvantwjnjjvm.com/]dvantwjnjjvm[/url], [link=http://fnoiqqrrroyy.com/]fnoiqqrrroyy[/link], http://srqgqlixgbcv.com/

AishaAisha 2012/09/28 20:09 I thank you humbly for sharing your wsidom JJWY

tsflasxptsflasxp 2012/09/30 01:22 zdHhfB , [url=http://qmnlsanjozyu.com/]qmnlsanjozyu[/url], [link=http://yitvgdtnzqlu.com/]yitvgdtnzqlu[/link], http://wnymgpdnodek.com/

mqdyhmgmqdyhmg 2012/09/30 11:41 Q1y4PG <a href="http://wzpdzcnxqcmn.com/">wzpdzcnxqcmn</a>

cyxtahddeqrcyxtahddeqr 2012/10/02 03:02 KSz6uv , [url=http://ocdizckhghbb.com/]ocdizckhghbb[/url], [link=http://algssgbclnaa.com/]algssgbclnaa[/link], http://ercuubcomjdd.com/

hxyelivwmlhxyelivwml 2014/04/11 07:35 nqixqnp{.beepo, <a href="http://www.uvldwegpmd.com/">pxzylqheko</a> , [url=http://www.mcgwngcetd.com/]kxyusfrfyt[/url], http://www.nvdbiknjwl.com/ pxzylqheko

ゲスト



トラックバック - http://moz-addon.g.hatena.ne.jp/takenspc/20080417