我需要将波斯(Shamsi)日期转换为公历日期。我搜索了很多并找到了不同的解决方案。最可靠的答案似乎是 ibm 库;icu4j。因此,我开始使用它来更改日期,但是所提供的示例对我不起作用。当我在日历中设置波斯日期并获取时间戳时,对于 1399/04/16,它将是 -18009228344000。但是当我使用公历时,2020/07/06 的时间戳是:1593977400000。所以,我找到了方法!我找到了差异并将其添加到波斯时间戳。现在我可以将任何波斯日期转换为公历。但我想知道这个解决方案是否可靠。这是代码:
ULocale locale = new ULocale("@calendar=persian");
Calendar persianCalendar = Calendar.getInstance(locale);
persianCalendar.clear();
persianCalendar.set(1399, 3, 16);
long persianTime = persianCalendar.getTimeInMillis();
long GeorgeanTime =persianTime + 19603205744000L;
persianCalendar.setTimeInMillis(GeorgeanTime);
Date gregorianDate = persianCalendar.getTime();
输出是Mon Jul 06 00:00:00 IRDT 2020
波斯日期的正确转换。