首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何格式化Hijri日期

如何格式化Hijri日期
EN

Stack Overflow用户
提问于 2016-10-22 20:51:24
回答 1查看 3.4K关注 0票数 1

我使用time4AIslamic Hjiri to Gregorian Date进行转换,反之亦然。我无法找到将Hijri Date格式化为"yyyy/mmm/dd“模式的方法。

下面是将Gregorian转换为Hijri的代码:

代码语言:javascript
复制
     CalendarVariant variant =
                    PlainDate.of(2016, 02, 12)
                            .transform(HijriCalendar.class, HijriCalendar.VARIANT_UMALQURA);

System.out.println(variant.toString());

我拿到了这个AH-1437-05-03[islamique-umalqura]

我需要这样的东西:1437-05-03

那么,我如何格式化Hijri Date呢?

EN

回答 1

Stack Overflow用户

发布于 2016-12-05 15:16:51

很抱歉迟了回答。如果您没有立即得到答复,您也可以直接问问题的问题跟踪的Time4J。

关于你的问题,有两点:

( a)不要使用抽象接口类型,而是使用具体类型。在这里,将CalendarVariant替换为HijriCalendar,否则,由于未解析的泛型,您将处理原始类型。

b)格式化程序类ChronoFormatter可以处理格式(以及解析)。您只需要向它提供以下信息:模式字符串、模式类型、区域设置和时间顺序。它也是不可变的,可以存储在一个静态的最终常量中。示例:

代码语言:javascript
复制
HijriCalendar hijriDate =
    PlainDate.of(2016, 02, 12).transform(
        HijriCalendar.class,
        HijriCalendar.VARIANT_UMALQURA
    );
ChronoFormatter<HijriCalendar> hf =
    ChronoFormatter.ofPattern(
        "yyyy-MM-dd", // mmm as given by you would be in minutes in CLDR-standard
        PatternType.CLDR,
        Locale.ROOT,
        HijriCalendar.family()
    );
System.out.println(hf.format(hijriDate)); // 1437-05-03

给定的示例只使用根区域设置,因为您只需要使用标准数字的数字表示。当然,如果需要,可以使用其他数字系统进行格式化表示(那么区域设置很重要,甚至可以设置一个显式格式属性)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40196928

复制
相关文章

相似问题

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