首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >年号从gregorian转换为hijri java time4j

年号从gregorian转换为hijri java time4j
EN

Stack Overflow用户
提问于 2016-04-30 09:46:47
回答 1查看 468关注 0票数 1

我从用户那里取一年的号码。怎么才能把它转换成年号呢?最好不是使用jodatime,而是使用time4j或java 8。

例句:我需要从2016年起就有年数。

我找到这篇文章了,在Android中是否有任何用于波斯日历(Shamsi或Jalali)的库或算法?

代码语言:javascript
复制
System.out.println(jalali.transform(PlainDate.class)); // 2015-03-25

但是方法转换不起作用。

此外,我还找到了这篇文章,将hijri转换为gregorian:从Hijri日期字符串中获取gregorian日期

但我需要从格里高利到希里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-30 13:10:31

“但是方法转换不起作用”这句话。应该读为“不编译”。

原因是HijriCalendar代表了一系列不同的变体(例如Umalqura)。技术背景:这个类继承自CalendarVariant而不是Calendrical。因此,编译器强制您在transform()-method和两个论点一起使用。第二个参数指定HijriCalendar的变体。示例:

代码语言:javascript
复制
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的实例,就可以轻松地获得hijri年:

代码语言:javascript
复制
int hijriYear = umalqura.getYear();
System.out.println("Year (hirji-umalqura): " + hijriYear); // 1437
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36953299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档