Использование Java 8java.time.LocalDate
, вы можете вычислить дату китайский Новый год?Использование Java 8 java.time.LocalDate, можете ли вы вычислить дату китайского Нового года?
5
A
ответ
1
Наверное, нет.
В Oracle Documentation указывается, что эта функция использует григорианскую систему календаря. Китайский Новый год основан на китайском календаре и лунном календаре. (Source)
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.
См. Также [JDK-issue] (https://bugs.openjdk.java.net/browse/JDK-4609228). Чтобы установить ваши ожидания, я полагаю, что поддержка китайского лунного календаря никогда не будет в стандартной Java. –
Если бы я смог ответить на ваш вопрос, не могли бы вы принять его? Благодаря! – camiblanch