コードを晒してみる その2 DateTime::Simple
日付や時間を扱うPerlモジュールはたくさんあります。DateTime や Date::Simple、Date::Manip、Date::Calc といったところが有名どころだと思います。
私の場合、Perlモジュールがインストールできない環境(ホスティングだったり、サーバ管理者がうるさくてインストールさせてくれなかったり)に設置するような場合が多いので、PurePerlで、.pm ファイルを置くだけで使えるようなものが欲しくなり、ついつい車輪の再開発をしてしまうのです。
DateTime::Simple - A date and time object.
日付をOOに扱うPerlモジュールです。相変わらず CPAN にアップする勇気はありません。英語の POD は書けません。
ちなみにこの DateTime::Simple は、
- 日付をOOに扱いたい
- 文字列や配列で渡される日付を上手く扱いたい('20081028' || '2008年10月28日' || ( 2008, 10, 28 ) || { year=>2008, mon=>10, day=>28 } といったように、ある程度どんな形でも良きに計らってくれる)
- POSIX::strftime のフォーマットが使いたい
- 不正な日付を丸く収めてしまいたい(2007年2月29日は2007年3月1日だよ、とか)
- 日付や時間の計算をしたい
といった、自分なりの要望から書いたものです。ですので、
- UNIX Time を基準にしてるので、2038年問題などの影響を受けます。1970年以前の日付は扱えないかもしれません。
- 閏秒とか、知りません。
- 日付の計算には、localtime や Time::Local::timelocal を使っています。
- タイムゾーンも知りません。$ENV{TZ} の通りになります。
といった制約があります。これらのことが問題になる場合には、このモジュールは使えません。
全体的に、インタフェースは DateTime を真似たつもりですが、new() からして違いますね・・・。私の場合は、UNIX Time から初期化できた方が便利だと思ったので。
あまり役に立つモノでもないかもしれませんが、晒すことに意味があるかも知れないので。
#追記
http://iandeth.dyndns.org/mt/ian/archives/000620.html
http://blog.livedoor.jp/dankogai/archives/50519859.html
要するに、がんばればどんなPerlモジュールだって use lib でなんとかなるということですね・・・・。やっぱり、車輪の再開発は無駄なのかな。でも、車輪の再開発はオモシロイのですけどね。