如何格式Hijri日期
问题描述:
我正在使用time4A来从Islamic Hjiri to Gregorian Date
进行转换,反之亦然。我无法找到将Hijri日期格式化为“yyyy/mmm/dd
”模式的方法。如何格式Hijri日期
这里是从公历转换为回历代码:
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日期?
答
对不起,对于迟到的答案。如果您没有得到即时答复,您也可以直接在Time4J的问题跟踪器上提问。
关于你的问题,有两点:
一)不要使用抽象接口类型,但具体类型。在这里,请用HijriCalendar替换CalendarVariant
,否则由于未解决的泛型问题,您将处理原始类型。
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
给出的示例仅使用根区域设置,因为您只需要使用标准数字的数字表示法。但是,如果您需要,当然您可以使用其他数字系统进行格式化表示(然后区域设置很重要,或者您甚至设置了explicit format attribute)。