2016-10-22 2 views
1

J'utilise time4A pour faire la transformation de Islamic Hjiri to Gregorian Date et vice versa. Je ne suis pas en mesure de trouver un moyen de formater Hijri Date au motif "yyyy/mmm/dd".Comment formater Hijri Date

Voici le code pour convertir grégorien à Hijri:

 CalendarVariant variant = 
        PlainDate.of(2016, 02, 12) 
          .transform(HijriCalendar.class, HijriCalendar.VARIANT_UMALQURA); 

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

Je suis arrivé ce AH-1437-05-03[islamique-umalqura]

Je dois quelque chose comme: 1437-05-03

Alors, comment je peux formater Hijri Date?

Répondre

0

Désolé pour la réponse tardive. Si vous n'obtenez pas de réponse immédiate, vous pouvez également poser la question directement sur le tracker de Time4J.

A propos de votre question, deux points:

a) Ne pas utiliser les types d'interface abstraites mais les types de béton. Ici, remplacez CalendarVariant par HijriCalendar, sinon vous allez gérer un type brut en raison de génériques non résolus.

b) La classe de formateur ChronoFormatter peut gérer la mise en forme (et l'analyse également). Vous avez seulement besoin de le nourrir avec les informations suivantes: chaîne de modèle, type de modèle, paramètres régionaux et chronologie. Il est également immuable et peut être stocké dans une constante finale statique. Exemple:

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 

L'exemple donné utilise simplement les paramètres régionaux racine car vous ne souhaitez obtenir qu'une représentation numérique à l'aide de chiffres standard. Mais bien sûr, vous pouvez avoir une représentation formatée en utilisant d'autres systèmes numériques si vous le souhaitez (les paramètres régionaux sont importants, ou vous pouvez même définir un explicit format attribute).