JavaScriptのDateオブジェクトを拡張してPHPのdate関数を実装
某勉強会のグループチャットにて、「JavaScriptでXMLを取得、パースして適当に表示しなさい」というお題が出た時、ちょっと欲しいなと思ったので勉強がてら作ってみました。
一応date関数に対応する全てのフォーマット文字列が使えますが、タイムゾーン周りを正確に実装するのは実質不可能なので、 e は「 Asia/Tokyo 」、 T は「 JST 」固定になっています。
その他、副産物で日付周りのメソッドも色々生えてるので、良かったら使ってみて下さい。
ダウンロード
簡単な使い方
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でガッツリ日付処理する事ってあんまり無いですね。