Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我在ICU4J库中得到了错误的输出_Java_Icu4j - Fatal编程技术网

Java 我在ICU4J库中得到了错误的输出

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

我想把日期从波斯历转换成公历。 为此,我使用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年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中尝试了以零为基础的月份。看看我的答案。这很合适,但请做些调查。我没有时间。