Java 我在ICU4J库中得到了错误的输出
我想把日期从波斯历转换成公历。 为此,我使用ICU4J库(版本65.1)。 问题是这个库为某些日期提供了错误的输出 这是我的密码:Java 我在ICU4J库中得到了错误的输出,java,icu4j,Java,Icu4j,我想把日期从波斯历转换成公历。 为此,我使用ICU4J库(版本65.1)。 问题是这个库为某些日期提供了错误的输出 这是我的密码: ULocale locale = new ULocale("fa_IR@calendar=persian"); GregorianCalendar gregoriancal = new GregorianCalendar(); Calendar persiancal = Calendar.getInstance(locale); // ye
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年2月3日
但它给我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);
使用带有正确伊朗时区的。在00:00的时候,这种情况很容易发生。@Joop Eggen,你能写下代码吗?Thanks@omid我需要你的帮助。请告诉我你的电子邮件地址或wats应用程序号码。我将在二月底更换公司,还有很多事情要做。但我将再次研究代码。在java.util.Calendar中尝试了以零为基础的月份。看看我的答案。这很合适,但请做些调查。我没有时间。