【发布时间】:2015-05-04 18:01:41
【问题描述】:
使用 Java 8 java.time.LocalDate,你能计算出农历新年日期吗?
【问题讨论】:
-
另见JDK-issue。为了满足您的期望,我想标准 Java 永远不会支持中国农历。
-
如果我能回答你的问题,你介意接受吗?谢谢!
标签: java calendar java-8 java-time
使用 Java 8 java.time.LocalDate,你能计算出农历新年日期吗?
【问题讨论】:
标签: java calendar java-8 java-time
可能不会。
Oracle Documentation 声明此函数使用公历系统。农历新年以农历和农历为基础。 (Source)
【讨论】:
如果没有外部库当然不可能,因为标准 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。
【讨论】: