Joda-formatage de L'heure pour la date islamique

j'utilise Joda-Time pour obtenir l' date islamique dans le JJ MMMM AAAA mais je reçois toujours JJ MM AAAA.

Tout conseiller? est-ce que les dates Hijri ne sont pas supportées pour le formatage? Ce n'est pas clair sur le site de Joda-Time.

 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);
14
demandé sur Basil Bourque 2014-02-25 14:40:23

2 réponses

ceci n'est pas actuellement mis en œuvre. La classe BasicChronology définit le champ monthOfYear pour utiliser GJ Monthofyeardatetimefield qui à son tour reçoit ses données de java.texte.DateFormatSymbols. L'Islamicchronologie utilise un champ temporel monthOfYear pour un champ temporel Monthofyear qui a la mise en œuvre suivante de getAsText:

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

Ce que quelqu'un a besoin de faire est de créer un IslamicMonthOfYearDateTimeField qui s'étend BasicMonthOfYearDateTimeField et remplace la méthode afin qu'elle retourne le nom du mois, plutôt que la valeur numérique du mois. Cela peut se faire soit dans la base de données Joda-time, soit complètement à l'extérieur. Pour obtenir ce travail en dehors de joda, il suffit d'étendre L'IslamicChronology et override assembler pour tirer dans votre nouveau mois-de-L'espace-temps islamique. Je demanderais à joda-time moi-même, mais je doute qu'ils acceptent une solution non localisée.

2
répondu Zeki 2014-03-18 21:49:33

tl;dr

java.time.chrono.HijrahDate.from(
    LocalDate.of( 2014 , 2 , 25 ) 
)
.get( ChronoField.YEAR )

1435

java.temps

Joda-Time le projet est maintenant en mode maintenance, conseillant la migration vers le java.temps classes.

java.temps cours HijrahChronology et HijrahDate dans le java.time.chrono package.

pour Java 6 & 7, et pour Android plus tôt, le ThreeTen-Backport le projet offre aussi un HijrahChronology et HijrahDate.

LocalDate ld = LocalDate.of( 2014 , 2 , 25 ) ;
HijrahDate hd = HijrahDate.from( ld  );
String output = hd.toString() ;

sortie: Hijrah-umalqura AH 1435-04-25

Comme pour les autres formats, le format méthode DateTimeFormatter semblent revenir à la chronologie ISO.

Locale locale = Locale.forLanguageTag( "en-US-u-ca-islamic-umalqura" );
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL ).withLocale( locale );
String output2 = hd.format( f );

output2: mardi, février 25, 2014

bien que je n'ai pas le temps pour le moment de le faire, je suggère d'examiner le le code source de l' HijrahDate::toString méthode.

vous pouvez lancer votre propre formatage en utilisant le code d'exemple comme vu dans le java.temps.chrono documentation du paquet.

int day = hd.get( ChronoField.DAY_OF_MONTH );
int dow = hd.get( ChronoField.DAY_OF_WEEK );
int month = hd.get( ChronoField.MONTH_OF_YEAR );
int year = hd.get( ChronoField.YEAR );
System.out.printf( "%s %s %d-%s-%d%n" , hd.getChronology().getId() , dow , day , month , year );

Hijrah-umalqura 2 25-4-1435


Voir aussi:

Convertir Jalali calendrier géorgien en java

Obtenir un date grégorienne de Hijri date strings


java.temps

java.temps framework est intégré à Java 8 et plus tard. Ces classes supplantent le vieux gênant!--102-->héritage classes de date-heure telles que java.util.Date,Calendar,&SimpleDateFormat.

Joda-Time projet, maintenant dans mode de maintenance, conseille la migration vers le java.temps classes.

Pour en savoir plus, consultez le Tutorial Oracle. Et rechercher le débordement de la pile pour de nombreux exemples et explications. Spécification JSR 310.

Vous pouvez échanger java.temps objets directement avec votre base de données. Utiliser un JDBC driver conforme à JDBC 4.2 ou plus tard. Pas besoin de chaînes, pas besoin de java.sql.* classes.

Où obtenir le java.les classes de temps?

java.util.Date ThreeTen-Extra le projet étend java.temps avec des cours supplémentaires. Ce projet est un terrain d'essai pour possibilité d'ajouts futurs à java.temps. Vous pouvez trouver quelques classes utiles ici Interval,YearWeek,YearQuarter et plus.

0
répondu Basil Bourque 2018-05-23 21:26:56