ikeike443のブログ

ソフトウェアビジネスに関心がある系のブログ

Joda-Timeがいい

Javaで日付処理するのって面倒ですよね。

Joda-Timeは日付のインスタンス生成から計算、出力フォーマット処理までワンライナーでいける素敵なライブラリのようです。

詳細は下記のIBMの記事を読んでください。素敵です。
http://www.ibm.com/developerworks/jp/java/library/j-jodatime.html

個人的には下記のように書けるのが楽でいい感じです。

*文字列から日付型への変換が楽

import org.joda.time.DateTime;

DateTime dt = new DateTime("2010-04-05T13:20:25");
DateTime dt2 = new DateTime("2010-04-05"); //これでももちろんいい

ISO8601に則った書式であれば、上記のように簡単にパースできます。
参考(JavaDoc):
http://joda-time.sourceforge.net/api-release/org/joda/time/format/ISODateTimeFormat.html#dateTimeParser()

*日付の計算、出力まで一行で書けて楽

import org.joda.time.DateTime;

//今月の末日を取得したい場合
DateTime dt = new DateTime().dayOfMonth().withMaximumValue();

//指定された日の90日後の週の最初の日を取得したい場合
DateTime dt2 = new DateTime("2010-04-05").plusDays(90).dayOfWeek().withMinimumValue();

//指定された月(下記では2010年4月)の末日を取得し、特定の書式にフォーマットした文字列を作りたい場合
String dtstr = new DateTime(2010,04,1,0,0,0,0).dayOfMonth().withMaximumValue().toString("yyyy年MM月dd日");

また、JDK標準のCalendarクラスやjava.util.Dateとの相互運用が可能(Jodaを使って各々のインスタンスを作れる!)らしい。
既存のコードにも簡単に挿入できそうですね。

今日始めて触ったのでまだ分かってないことも多いですが、かなり便利だと思います。

ところで、Jodaって、やっぱりスターウォーズヨーダのことなんですかね。。