コードを晒してみる その2 DateTime::Simple

日付や時間を扱うPerlモジュールはたくさんあります。DateTimeDate::SimpleDate::ManipDate::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 でなんとかなるということですね・・・・。やっぱり、車輪の再開発は無駄なのかな。でも、車輪の再開発はオモシロイのですけどね。