Rewish

JavaScriptのDateオブジェクトを拡張してPHPのdate関数を実装

某勉強会のグループチャットにて、「JavaScriptでXMLを取得、パースして適当に表示しなさい」というお題が出た時、ちょっと欲しいなと思ったので勉強がてら作ってみました。

一応date関数に対応する全てのフォーマット文字列が使えますが、タイムゾーン周りを正確に実装するのは実質不可能なので、 e は「 Asia/Tokyo 」、 T は「 JST 」固定になっています。

その他、副産物で日付周りのメソッドも色々生えてるので、良かったら使ってみて下さい。

ダウンロード

php_date.js

簡単な使い方

date関数風に使う基本

インスタンス化したDateオブジェクトのformatメソッドを使ってdate関数風にフォーマット。

var date = new Date();

alert(date.format('Y-m-d H:i:s'));
//=> 2005-08-15 15:52:01

定数を使う

定義済みの定数にある定数(っぽいモノ)も使えます。

var date = new Date();

alert(date.format(Date.ISO8601));
//=> 2005-08-15T15:52:01+09:00

alert(date.format(Date.RFC822));
//=> Mon, 15 Aug 05 15:52:01 +0900

日付文字列をパース

Date.parse()を拡張して、定数で定義されているフォーマットもパース出来るようにしました。

alert(Date.parse('2005-08-15T15:52:01+09:00'));
//=> 1124088721000

alert(Date.parse('Wed, 19 Aug 09 00:12:58 +0900'));
//=> 1250608378000

フォーマット文字列と同時にタイムスタンプもセット

formatメソッドの第二引数に ミリ秒単位のUNIXタイムスタンプ または Date.parse()でパース出来る日付文字列 をセットすることで好きな日時を出力できます。

var date = new Date();

alert(date.format('Y-m-d H:i:s', 1124088721000));
//=> 2005-08-15 15:52:01

alert(date.format('Y-m-d H:i:s', '2009-12-20T18:32:31+00:00'));
//=> 2009-12-20 09:32:31

※セットした日時は日付を出力するまでの間のみ有効です。継続的に日付をセットしたい場合はsetTimeメソッドを使用して下さい。

以上、簡単な使い方でした。

利用シーン

作っておいて何ですが、JavaScriptでガッツリ日付処理する事ってあんまり無いですね。