2016-05-31 12 views
0

Ich habe eine Instant und ich möchte eine verwenden, um ein Datum mit nur Datum und Monat unter Berücksichtigung der Benutzer Local zu drucken.Erhalten Sie Datum und Monat in Bezug auf lokale

Zum Beispiel: In den USA möchte ich MM/dd (d. H. 05/31) drucken, während in Deutschland ich dd.MM (d. H. 31.05) drucken möchte.

Wie kann ich das mit java8 ?

+0

AFAIK, gibt es keine vorgegebene länderspezifische Format String. 'DD.MM' für ein deutsches Gebietsschema ist nicht Standard (selbst wenn es weit verbreitet ist, habe ich keine Ahnung). Sie müssen definieren, welches Format Sie für welches Gebietsschema verwenden möchten. Dann ist es nur eine Frage des Konstruierens des "DateTimeFormatter" mit diesem Format. – Tunaki

+0

Bitte verwenden Sie "dd" anstelle von "DD" (letzteres ist Tag des Jahres!). –

+0

@Tunaki Also muss ich meinen eigenen DateTimeFormatter für jeden Local erstellen? – sockeqwe

Antwort

0

Die Methode DateTimeFormatter.ofLocalizedDate ermöglicht es Ihnen, einen Formatierer zu erhalten, der ein Datum ausgeben kann, aber in JDK 8 sind keine Daten verfügbar, die nur einen lokalisierten Jahr-Monat ausgeben. Sie müssten selbst eine Map<Locale, DateTimeFormatter> erstellen. Sie können möglicherweise die Daten in CLDR verwenden, um zu helfen.

Die Ausgabe eines Instant ist ein separates Problem, da ein Instant keinen Datums- oder Zeitteil hat. Dem Formatierer muss eine Zeitzone hinzugefügt werden, die withZone(ZoneId) verwendet, um ein Instant als ein Jahr-Monat auszugeben.

+0

danke für die antwort. Ich fand auch diese Lösung 'Map ' und es funktioniert ... es gibt nur zu viele Einheimische: D – sockeqwe

Verwandte Themen