Я получаю неправильный вывод в библиотеке ICU4J - PullRequest
2 голосов
/ 05 февраля 2020

Я хочу преобразовать дату из персидского календаря в григорианский календарь. Для этого я использую библиотеку ICU4J (версия 65.1). Проблема в том, что эта библиотека дает неправильный вывод для некоторых дат.

Вот мой код:

ULocale locale = new ULocale("fa_IR@calendar=persian");

GregorianCalendar gregoriancal = new GregorianCalendar();

Calendar persiancal = Calendar.getInstance(locale);
//            year month day
persiancal.set(1398, 11, 16);

gregoriancal.setTime(persiancal.getTime());

String day = gregoriancal.get(Calendar.DATE) + "";

System.out.println(day);
----------------------------------------
output: 6

эта дата в персидском календаре (1398/11/16) эквивалентна 2020-02-02 -05 Среда, февраль в григорианском календаре

, но вывод 6 (в то время как 5)

что-то не так с моим кодом, что приводит к неправильному выводу ??

1 Ответ

0 голосов
/ 05 февраля 2020

После просмотра javado c прохождение ULocale должно сделать трюк, чтобы поместить GregorianCalendar в правильный часовой пояс:

com.ibm.icu.util.GregorianCalendar gregoriancal =
    new com.ibm.icu.util.GregorianCalendar(locale);

Я думаю, что месяц может быть 0- основано как в java .util.Calendar.

    persiancal.set(1398, 11-1, 16);
...