年份数字从公历转换为回历 java time4j
year number convert from gregorian to hijri java time4j
我从用户那里取了一个年号。如何将其转换为回历年数?最好不要使用 jodatime,而是使用 time4j 或 java 8.
示例:我需要从 2016 年开始使用回历年号。
我找到了这个 post, Is there any library or algorithm for Persian (Shamsi or Jalali) calendar in Android?
System.out.println(jalali.transform(PlainDate.class)); // 2015-03-25
但是方法 transform 不起作用。
我还发现 post 可以将回历转换为公历:
Get a gregorian date from Hijri date strings
但我需要从公历到回历。
句子“但是方法转换不起作用。”应该读作“不编译”。
原因是 HijriCalendar
代表了一系列不同的变体(例如 Umalqura)。技术背景:这个class继承自CalendarVariant
而不是Calendrical
。因此,编译器强制您使用 transform()
方法和 TWO arguments。第二个参数指定 HijriCalendar
的变体。示例:
PlainDate today = SystemClock.inLocalView().today();
HijriCalendar umalqura =
today.transform(HijriCalendar.class, HijriCalendar.VARIANT_UMALQURA);
HijriCalendar westIslamicCivil =
today.transform(HijriCalendar.class, HijriAlgorithm.WEST_ISLAMIC_CIVIL);
System.out.println(umalqura); // AH-1437-07-23[islamic-umalqura]
System.out.println(westIslamicCivil); // AH-1437-07-22[islamic-civil]
此示例还演示了为什么指定变体很重要。您会看到一天的差异(对于相同的公历日期)!实际上 Time4J 支持 11 种变体。 umalquara 变体是沙特阿拉伯的官方日历,而 8 个算法变体应该被解释为近似值并且具有更广泛的有效性范围。
一旦您拥有 HijriCalendar
的实例,您就可以轻松获得回历年份:
int hijriYear = umalqura.getYear();
System.out.println("Year (hirji-umalqura): " + hijriYear); // 1437
我从用户那里取了一个年号。如何将其转换为回历年数?最好不要使用 jodatime,而是使用 time4j 或 java 8.
示例:我需要从 2016 年开始使用回历年号。
我找到了这个 post, Is there any library or algorithm for Persian (Shamsi or Jalali) calendar in Android?
System.out.println(jalali.transform(PlainDate.class)); // 2015-03-25
但是方法 transform 不起作用。
我还发现 post 可以将回历转换为公历: Get a gregorian date from Hijri date strings
但我需要从公历到回历。
句子“但是方法转换不起作用。”应该读作“不编译”。
原因是 HijriCalendar
代表了一系列不同的变体(例如 Umalqura)。技术背景:这个class继承自CalendarVariant
而不是Calendrical
。因此,编译器强制您使用 transform()
方法和 TWO arguments。第二个参数指定 HijriCalendar
的变体。示例:
PlainDate today = SystemClock.inLocalView().today();
HijriCalendar umalqura =
today.transform(HijriCalendar.class, HijriCalendar.VARIANT_UMALQURA);
HijriCalendar westIslamicCivil =
today.transform(HijriCalendar.class, HijriAlgorithm.WEST_ISLAMIC_CIVIL);
System.out.println(umalqura); // AH-1437-07-23[islamic-umalqura]
System.out.println(westIslamicCivil); // AH-1437-07-22[islamic-civil]
此示例还演示了为什么指定变体很重要。您会看到一天的差异(对于相同的公历日期)!实际上 Time4J 支持 11 种变体。 umalquara 变体是沙特阿拉伯的官方日历,而 8 个算法变体应该被解释为近似值并且具有更广泛的有效性范围。
一旦您拥有 HijriCalendar
的实例,您就可以轻松获得回历年份:
int hijriYear = umalqura.getYear();
System.out.println("Year (hirji-umalqura): " + hijriYear); // 1437