2014-02-25 10 views
13

ich Joda-Time bin mit den Islamic date im dd MMMM yyyy zu bekommen, aber ich bin immer TTMMJJJJ bekommen.Joda-Time-Formatierung für islamisches Datum

Irgendwelche Ratschläge? Könnte es sein, dass Hijri-Daten nicht zum Formatieren unterstützt werden? Es ist nicht klar auf der Joda-Time Website.

DateTime dtISO = new DateTime(2014,2,25,0,0,0,0); 
DateTime dtIslamic = dtISO.withChronology(IslamicChronology.getInstance()); 
String formatIslamic= "dd MMMM yyyy"; 
DateTimeFormatter formatter = DateTimeFormat.forPattern(formatIslamic).withChronology(IslamicChronology.getInstance()); 
String islamicDateString = formatter.print(dtIslamic); 
+1

Werfen Sie einen Blick hier [1] [1] [Joda Zeit Bug oder mein Fehler?]: Http://stackoverflow.com/questions/1525932/joda-time-bug-or -my-Fehler-Java-Joda-Zeitangaben-als-Strings-Parsing Die zweite Antwort bietet eine Problemumgehung. – Boris

+0

Probieren Sie die in http://stackoverflow.com/a/1572131/1688570 beschriebene Lösung aus, es funktionierte für mich. – TouDick

+0

danke @TouDick, aber ich habe eine andere Lösung verwendet, die JODA nicht verwendet. –

Antwort

1

Dies ist derzeit nicht implementiert. Die BasicChronology-Klasse legt das Feld "monthOfYear" auf GJMonthOfYearDateTimeField fest, das wiederum die Daten von java.text.DateFormatSymbols erhält. Die IslamicChronology verwendet eine setzt das MonthOfYear Feld zu einem BasicMonthOfYearDateTimeField, die die folgenden Implementierung von getAsText hat:

public String getAsText(int fieldValue, Locale locale) { 
    return Integer.toString(fieldValue); 
} 

, was jemand tun muss, ist eine IslamicMonthOfYearDateTimeField zu erstellen, die BasicMonthOfYearDateTimeField erweitert und überschreibt die Methode so, dass es den Namen gibt die der Monat und nicht der numerische Wert des Monats. Dies könnte entweder in der joda-time Codebase oder komplett außerhalb erfolgen. Um dieses Arbeiten außerhalb von Joda zu ermöglichen, erweitern Sie einfach IslamicChronology und überschreiben Sie Assemble, um Ihr neues IslamicMonthOfYearDateTimeField einzubinden. Ich würde ja selbst eine Pull-Anfrage an joda-time stellen, aber ich bezweifle, dass sie eine nicht lokalisierte Lösung akzeptieren würde.

+0

Vielen Dank für Ihre Antwort, aber ich habe eine andere Implementierung ohne JODA verwendet. –