![]() | tech note |
| 自分をリファクタリング中。 |
Javaで日付・時刻を扱う場合、DateやらCalendarやらを使い分けなければならず、ずっとなんとかならんかなぁと思っていました。
そのへんをJoda-Timeというライブラリが改善してくれそう、ということで使ってみました。
Joda-Timeはココにあります。
Joda-Timeは、DateやCalendarでできることは当然できる他、期間の表現や文字列のパース、フォーマッタもサポートしており、DateやCalendarの弱点を補完+αなライブラリと言えます。
DateTime datetime = new DateTime();
//日付や時刻のoffset
DateTime threeDaysAgo = datetime.minusDays(3); //3日前
DateTime twoHoursAfter = datetime.plusHours(2); //2時間後
System.out.println("3日前は、" + threeDaysAgo);
System.out.println("2時間後は、" + twoHoursAfter);
//フィールドの取り出し
System.out.println("年は、" + datetime.getYear());
System.out.println("月は、" + datetime.getMonthOfYear());
System.out.println("日は、" + datetime.getDayOfMonth());
//日数差の計算
DateTime start = new DateTime(2001, 1, 1, 0, 0, 0, 0);
DateTime end = new DateTime();
System.out.println("今日で21世紀になってから"
+ Days.daysBetween(start, end).getDays() + "日経ちました。。。");
//文字列からDateTimeをつくる
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyyMMdd");
DateTime dt = fmt.parseDateTime("20080505");
//java.util.Dateに変換
Date date = dt.toDate();
//Calendarに変換
Calendar cal = dt.toCalendar(Locale.JAPANESE);