使用Java 8 java.time.LocalDate,您可以计算中国新年日期吗?

时间:2015-05-04 18:01:42

标签: java calendar java-8 java-time

使用 Java 8 java.time.LocalDate,您可以计算中国新年日期吗?

2 个答案:

答案 0 :(得分:1)

可能不是。

Oracle Documentation表示此函数使用公历系统。农历新年以中国历和农历为基础。 (Source

答案 1 :(得分:0)

没有外部库肯定是不可能的,因为标准Java不包含中文日历。中国新年的计算需要复杂的天文计算,标准Java也没有天文学支持。

作为解决方法,请使用我的库Time4J(v4.35),然后编写以下代码:

LocalDate gregorian = LocalDate.now(ZoneId.of("Asia/Shanghai"));
ChineseCalendar cc = ChineseCalendar.ofNewYear(gregorian.getYear());
LocalDate newYearAsGregorian = cc.transform(PlainDate.axis()).toTemporalAccessor();

System.out.println(
    newYearAsGregorian); // 2018-02-16

System.out.println(
    "Year of the " 
        + cc.get(ChineseCalendar.YEAR_OF_CYCLE).getZodiac(Locale.ENGLISH));
// Year of the Dog

有关详细信息,另请参阅API