English Japanese Kawa.netxp [JSAN] Date.W3CDTF - ISO-8601日時フォーマット対応JavaScriptクラス

Date.W3CDTF クラスは、JavaScript ビルドインの Date オブジェクトを継承して、W3CDTF の入出力に対応します。
今回はテストスクリプトも書いて、初めて JSAN に登録してみました。
W3CDTF とは、RSS などで利用されている『yyyy-mm-ddThh:mm:ss+hh:mm』形式の日時フォーマットです。
複数の形式がありますが、Date.W3CDTF クラスでは以下の形式に対応しています。

2005-04-23T17:20:00+09:00 ⇒タイムゾーン指定あり
2005-04-23T17:20:00Z ⇒タイムゾーン指定なし

昨年書いた jse-date-w3cdtf.js はネイティブのDateオブジェクトを直接拡張するものでしたが、 今回の Date.W3CDTF クラスは、少し行儀良く継承するように書いています。
今回の Date.W3CDTF クラスも、他のクラスに依存しないので lib/Date/W3CDTF.js ファイルのみ単体で利用できます。

ダウンロード

ダウンロードは、 JSAN または ↓コチラからどうぞ。

アーカイブ: Date.W3CDTF-0.04.tar.gz TARGZ
.js ソースファイル単体: lib/Date/W3CDTF.js JavaScript

.tar.gz アーカイブにはテストファイルなどが含まれますが、 動作に必要なのは lib/Date/W3CDTF.js ファイルだけです。
IE 7、Firefox 1.5.0、Opera 8.53、Safari 2.0.3、OmniWeb 5.1.3 で 動作確認済 です。

使い方

Date.W3CDTF では、ネイティブの Date クラスの各メソッドに加えて、 getW3CDTF()setW3CDTF() という2つのメソッドが使えるようになります。
使い方は、これまで new Date() していた箇所を new Date.W3CDTF() に書き換えるだけです。
ネイティブ Date クラスの持つ全てのメソッドはそのまま利用できます。

getW3CDTF() で出力した際のタイムゾーン(+09:00等)は、 PC システム時計で設定しているタイムゾーンが適用されます。

<script> 要素でロードする場合

以下では現在時刻の W3CDTF 表記と、 W3CDTF で指定した日時のローカル表記を表示してます。 DEMO

<html>
<head>
<script src="lib/Date/W3CDTF.js"></script>
</head>
<body>
<script><!--
    var dd = new Date.W3CDTF();         // now
    document.write( "getW3CDTF: "+ dd.getW3CDTF() +"<br/>\n" );

    dd.setW3CDTF( "2005-04-23T17:20:00+09:00" );
    document.write( "toLocaleString: "+ dd.toLocaleString() +"<br/>\n" );
// --></script>
</body>
</html>

JSAN.use() で動的ロードする場合

または、JSAN の use メソッドによる動的ロード機能を使うなら↓のようにも書けます。 DEMO

<html>
<head>
<script src="tests/lib/JSAN.js"></script>
</head>
<body>
<script><!--

    JSAN.addRepository("lib");
    JSAN.errorLevel = "die";
    JSAN.use( 'Date.W3CDTF' );

    var dd = new Date.W3CDTF();         // now
    document.write( "getW3CDTF: "+ dd.getW3CDTF() +"<br/>\n" );

    dd.setW3CDTF( "2005-04-23T17:20:00+09:00" );
    document.write( "toLocaleString: "+ dd.toLocaleString() +"<br/>\n" );

// --></script>
</body>
</html>

とはいえ、JSAN の use メソッドは、Opera でイマイチ動作が悪いような気もするけど、 そういうものなのでしょうか?
<script> 要素で明示的に読み込んだ方が速いし、確実そうですね。

更新履歴

2006/04/05 - バージョン0.03
JSAN 用に テストスクリプトなどを追加してパッケージ化しました。
2006/03/06
setW3CDTF() メソッドのタイムゾーン処理のバグを修正しました。
2005/04/23
Date.W3CDTF の前身である jse-date-w3cdtf.js を公開しました。

コメントはこちらへ by AjaxCom

その他のページへのリンク

このページへのトラックバック by AjaxTB

トラックバックURL:http://www.kawa.net/service/tb/ajaxtb.cgi/works/js/date/w3cdtf.html

Kawa.netxp © Copyright 2006 Yusuke Kawasaki