Joda-Time で日付操作

commns-lang3 が便利だったけど Joda-Time も便利なので

// 月初を取得
DateTime dt = DateTime.now().dayOfMonth().withMinimumValue().dayOfMonth().roundFloorCopy();
System.out.println(dt);

// 月末を取得
dt = DateTime.now().dayOfMonth().withMaximumValue().dayOfMonth().roundFloorCopy();
System.out.println(dt);

// 年末を取得
dt = DateTime.now().dayOfYear().withMaximumValue().hourOfDay().withMaximumValue().minuteOfHour()
        .withMaximumValue().secondOfMinute().withMaximumValue();
System.out.println(dt);

// 今日の8時半を取得
dt = DateTime.now().dayOfMonth().roundFloorCopy().withHourOfDay(8).withMinuteOfHour(30);
System.out.println(dt);

// 今日の23時55分を取得
dt = DateTime.now().dayOfMonth().roundFloorCopy().withHourOfDay(23).withMinuteOfHour(55);
System.out.println(dt);

// 分以下を切り捨て
dt = DateTime.now().hourOfDay().roundFloorCopy();
System.out.println(dt);

// 時間以下を切り捨て
dt = DateTime.now().dayOfMonth().roundFloorCopy();
System.out.println(dt);

Joda-Time で期間操作

commons-lang3 でもいいけど、Joda-Time も便利なので

DateTime dts = new DateTime();
DateTime dte = dts.plusDays(1).plusMillis(1);
Interval interval = new Interval(dts, dte);

// Duration
Duration duration = interval.toDuration();
System.out.println("duration(msec): " + duration.getMillis());

long days = duration.getStandardDays();
System.out.println("duration(day): " + days);

long hours = duration.getStandardHours();
System.out.println("duration(hours): " + hours);

long miutes = duration.getStandardMinutes();
System.out.println("duration(miutes): " + miutes);

long seconds = duration.getStandardSeconds();
System.out.println("duration(seconds): " + seconds);