1

我正在使用time4A进行转换,Islamic Hjiri to Gregorian Date反之亦然。我无法找到将回历日期格式化为“ yyyy/mmm/dd”模式的方法。

这是从公历转换为回历的代码:

     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

那么,我如何格式化回历日期

4

1 回答 1

0

对不起,迟到的答案。如果您没有立即得到回复,您也可以直接在 Time4J 的问题跟踪器上提问。

关于你的问题,有两点:

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

b) 格式化程序类ChronoFormatter可以处理格式化(以及解析)。您只需向它提供以下信息:模式字符串、模式类型、语言环境和年表。它也是不可变的,可以存储在静态最终常量中。例子:

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

给定的示例仅使用根区域设置,因为您只需要使用标准数字的数字表示。但是,当然,如果需要,您可以使用其他数字系统进行格式化表示(然后语言环境很重要,或者您甚至设置了显式格式属性)。

于 2016-12-05T15:16:51.943 回答