我使用time4A从Islamic Hjiri to Gregorian Date进行转换,反之亦然。我无法找到将Hijri Date格式化为"yyyy/mmm/dd“模式的方法。
下面是将Gregorian转换为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 Date呢?
发布于 2016-12-05 15:16:51
很抱歉迟了回答。如果您没有立即得到答复,您也可以直接问问题的问题跟踪的Time4J。
关于你的问题,有两点:
( a)不要使用抽象接口类型,而是使用具体类型。在这里,将CalendarVariant替换为HijriCalendar,否则,由于未解析的泛型,您将处理原始类型。
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给定的示例只使用根区域设置,因为您只需要使用标准数字的数字表示。当然,如果需要,可以使用其他数字系统进行格式化表示(那么区域设置很重要,甚至可以设置一个显式格式属性)。
https://stackoverflow.com/questions/40196928
复制相似问题