我想将日期从波斯历转换为公历。 为此,我使用 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-05 星期三
但它给了我 6 作为输出(而它应该给出 5)
我的代码是否有问题导致输出错误?
最佳答案
查看传递 ULocale
的 javadoc 后,应该可以将 GregorianCalendar 置于正确的时区:
com.ibm.icu.util.GregorianCalendar gregoriancal =
new com.ibm.icu.util.GregorianCalendar(locale);
<小时/>
我认为月份可能是从 0 开始的,就像 java.util.Calendar 中一样。
persiancal.set(1398, 11-1, 16);
关于java - 我在 ICU4J 库中得到错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60076612/