tl; dr
String output = LocalDate.now(ZoneId.of("America/Montreal")).format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT).withLocale(Locale.CANADA_FRENCH));
Einzelheiten
Die Frage und andere Antworten werden mit alten veralteten Klassen (Simple, Datum, Kalender, etc.).
Verwenden Sie stattdessen das in Java 8 und höher integrierte java.time Framework. Siehe Oracle Tutorial. Ein großer Teil der java.time-Funktionalität wird auf Java 6 & 7 in ThreeTen-Backport zurückportiert und in ThreeTenABP an Android angepasst. Die Klasse LocalDate
repräsentiert einen Nur-Datum-Wert ohne Uhrzeit und ohne Zeitzone.
Um das aktuelle Datum zu erhalten, benötigen Sie eine Zeitzone. Für jeden Moment das Datum rund um den Globus nach Zeitzone.
ZoneId zoneId = ZoneId.of("America/Montreal");
LocalDate today = LocalDate.now(zoneId);
Norm ISO 8601-Format YYYY-MM-DD zu erhalten, rufen toString
.
String output = today.toString();
Um localize the format and content der String erzeugt wird, um den Datumswert darzustellen, verwenden Sie einen DateTimeFormatter
mit einem FormatStyle
die Länge (Full, Lang, Mittellang, Kurz) zu bestimmen.
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT);
Weisen Sie eine bestimmte Locale
anstatt Ihre aktuelle Standard-JVM.
Locale locale = Locale.CANADA_FRENCH;
formatter = formatter.withLocale(locale);
String output = today.format(formatter);
Das ist es, ziemlich einfach. Definieren Sie einfach einen Locale
wie benötigt, wie Locale.CANADA
, Locale.CANADA_FRENCH
, Locale.GERMANY
, Locale.KOREA
, oder verwenden Sie die verschiedenen Konstruktoren, wo Sie die menschliche Sprache und optional das Land und die Variante übergeben.