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 システム時計で設定しているタイムゾーンが適用されます。
以下では現在時刻の 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 メソッドによる動的ロード機能を使うなら↓のようにも書けます。
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> 要素で明示的に読み込んだ方が速いし、確実そうですね。
トラックバックURL:http://www.kawa.net/service/tb/ajaxtb.cgi/works/js/date/w3cdtf.html
Kawa.netxp © Copyright 2006 Yusuke Kawasaki