CUBは子供の白熊

Java SE 8 実践プログラミングの練習問題を解く

第5章 日付と時刻の新たな API : 問題 1 : プログラマーの日

問題

plusDaysメソッドを使用しないで、プログラマーの日を計算せよ

ちなみに、プログラマーの日は、元旦から256日目にあたる日のことで、ロシアでは公式の祝日になっている

解答

今年のプログラマーの日を計算するメソッドを実装する

■ 今年が何年かを調べて算出

public static LocalDate programmersDay() {
    int year = LocalDate.now().getYear();
    return LocalDate.ofYearDay(year, 256);
}

■ One Liner

public static LocalDate programmersDay() {
    return LocalDate.now().withDayOfYear(256);
}

Yearクラスを使う … これがベストか?

public static LocalDate programmersDay() {
    return Year.now().atDay(256);
}

■ Calendar クラスを使ったバージョン

public static Calendar programmersDay() {
    Calendar now = Calendar.getInstance();
    now.set(Calendar.DAY_OF_YEAR, 256);
    return now;
}

Calendar クラスを使ったバージョンでは、時分秒が余計だが発想は同じ