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);
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.
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 SE 8, Java SE 9, Java SE 10, et plus tard
- Built-in.
- fait partie de L'API Java standard avec une implémentation groupée.
- Java 9 ajoute quelques fonctionnalités mineures et fixer.
- Java SE 6 et Java SE 7
- Beaucoup de java.la fonctionnalité time est rétroportée à Java 6 & 7 en ThreeTen-Backport.
- Android
- versions ultérieures des implémentations du paquet Android de java.temps classe.
- Pour plus tôt Android (<26 ans), le ThreeTenABP le projet s'adapte ThreeTen-Backport (mentionné ci-dessus). Voir comment utiliser ThreeTenABP....
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.