Code: Select all
DateTimeFormatterUm eine Instanz eines DateTimeFormatter zu erstellen, sollte man seine statischen Methoden/Felder verwenden oder die zugrunde liegende DateTimeFormatterBuilder-Klasse wie in den folgenden Beispielen verwenden:
Code: Select all
DateTimeFormatter.ofPattern("yyyy-MM-dd")
// or
DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)
// or
DateTimeFormatter.ISO_LOCAL_DATE_TIME
// or
new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR).toFormatter()
Lokalisierung
Jetzt ist es möglich, einige Aspekte des Formatierers zu überschreiben/zu ändern, indem die Builder-ähnlichen .with***()-Methoden oder ähnliches auf der DateTimeFormatter-Instanz aufgerufen werden, die eine neue Kopieinstanz mit diesem geänderten Aspekt erstellen:
Code: Select all
DateTimeFormatter
.ofPattern("yyyy-MM-dd")
.withChronology(JapaneseChronology.INSTANCE)        // New instance with this chronology
.withDecimalStyle(DecimalStyle.of(Locale.of("fa"))) // New instance with this decimal style
- Wenn kein Gebietsschema für den Formatierer angegeben wird (d. h. implizit das System-/Java-Gebietsschema verwendet wird)
- Wenn das Standard-Java-Gebietsschema mithilfe von Locale.setDefault(myLocale) festgelegt wird; und dann eine Formatiererinstanz erstellt und verwendet wird
- Wann Verwendung des Gebietsschemas in der ofPattern("...", myLocale)-Methode von DateTimeFormatter
- Bei Verwendung des Gebietsschemas in der toFormatter(myLocale)-Methode von DateTimeFormatterBuilder
- Auch wenn explizit Unicode-Erweiterungen in der Gebietsschemanotation verwendet werden (wie Locale.forLanguageTag("en-u-nu-arabext")) und Verwenden des resultierenden Gebietsschemas in withLocale(myLocale)
- Jedes DateTimeFormatter#withLocale sollte durch DateTimeFormatter#localizedBy #910 ersetzt werden
- Wie formatiere ich ein Datum anhand eines beliebigen Gebietsschemas, das aus einem Sprach-Tag mit Java-Zeit erhalten wurde?
- (korrigiert) Wie formatiere ich ein LocalDate-Objekt in MM/tt/jjjj und das Format bleibt erhalten
- (korrigiert) SimpleDateFormat und gebietsschemabasierte Formatzeichenfolge
- etc.
Die alten Java-Klassen DateFormat und SimpleDateFormat lokalisieren Ziffern ordnungsgemäß:
Code: Select all
var myLocale = Locale.forLanguageTag("fa");
var formatter = new SimpleDateFormat("yyyy-MM-dd", myLocale);
var myDate = formatter.parse("2025-06-28");
formatter.format(myDate); // ۲۰۲۵-۰۶-۲۸
Code: Select all
var myLocale = Locale.forLanguageTag("fa");
var formatter = com.ibm.icu.text.SimpleDateFormat("yyyy-MM-dd", myLocale);
var myDate = LocalDate.of(2025, 6, 28);
formatter.format(myDate); // ۱۴۰۴-۰۴-۰۷
Code: Select all
let myDate = new Date(2025, 5, 28);
myDate.toLocaleDateString("fa"); // ۱۴۰۴/۴/۷
- Was genau sind die Unterschiede zwischen withLocale() und localizedBy()?
- Wenn localizedBy() ein gründlicher lokalisiertes Ergebnis erzeugt, gibt es einen sinnvollen Anwendungsfall für den Aufruf stattdessen von withLocale()?
- Wie kann ich Zahlen mit DateTimeFormatter lokalisieren?
- Wozu dient Locale in DateTimeFormatter?
- Unicode ICU und nicht java.time.DateTimeFormatter sollte für internationale Datums- und Uhrzeitangaben verwendet werden
- Ostarabische Ziffern
- Locale Service Provider (localespi) entfernen
 Mobile version
 Mobile version