年数从gregorian转换为hijri java time4j

时间:2016-04-30 09:46:48

标签: java hijri time4j

我从用户那里拿一年号码。如何将其转换为hijri年份数?更好地使用jodatime而不是time4j或java 8.

示例:我需要从2016年开始拥有hijri年份。

我找到了这篇文章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 不起作用。

此外,我发现此帖子将hijri转换为gregorian: Get a gregorian date from Hijri date strings

但我需要从gregorian到hijri。

1 个答案:

答案 0 :(得分:1)

句子“但方法转换不起作用。”应该读作“不编译”。

原因是<section href="#" id="showItem"></section> <select id="options"> <option value="page1.php">Page 1</option> <option value="page2.php">Page 2</option> </select> <script type="text/javascript" src="js/jquery-2.2.0.min.js"></script> <script type="text/javascript"> var options = $('select#options').val(); var section = $('section#showItem'); var getPage = function (url) { $.get(url).success(function (data) { section.html(data); }).error(function () { section.html("error loading page"); }); }; $('select#options').change(function () { var options = $('select#options').val(); getPage(options); }); $(document).ready(function () { getPage(options); }); </script> 代表了一系列不同的变体(例如Umalqura)。技术背景:此类继承自HijriCalendar而非CalendarVariant。因此,编译器会强制您使用Calendrical方法和TWO arguments。第二个参数指定transform()的变体。例如:

HijriCalendar

此示例还说明了为什么指定变体很重要。你看到一天的差异(相同的格里高利日期)!实际上,Time4J支持11种变体。 umalquara变体是沙特阿拉伯的官方日历,而8种算法变体应该被解释为近似值并具有更宽的有效范围。

一旦你拥有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] 的实例,你就可以轻松获得hijri年份:

HijriCalendar