java - 我在 ICU4J 库中得到错误的输出

标签 java icu4j

我想将日期从波斯历转换为公历。 为此,我使用 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/

相关文章:

java - 在哪里放置用于在 Facade 模式中创建 namedQuery 的代码?

Java LinkedList 迭代器过早耗尽

Java 读取图像

android - 在库中使用时从 ICU4J 中剥离数据文件

icu4j - 安卓 N : how can i migrate from Android SDK API to Android ICU API

java - 如何在 ICU4J 中合并音译规则?

java - 在封闭作用域中定义的局部变量计数必须是最终的或有效的最终的

java - 我如何使用j2html的每个方法

java - 使用 icu4j 将德语变音符号音译到他们的 DIN 5007-2 替代品中

java - ICU4j SimpleDateFormatter 返回奇怪的结果