Java SimpleDateFormat – Java Datumsformat

Einführung

Die Java-Klassen SimpleDateFormat und DateFormat werden zur Datumformatierung verwendet. Sie werden hauptsächlich dort eingesetzt, wo die Datum- und Uhrzeitfunktionalität von Java angezeigt oder genutzt werden muss. Beide Klassen sind im Paket com.text enthalten.

Java DateFormat

  • DateFormat wird zur Formatierung eines Datums in einen String basierend auf der spezifischen Lokalisierung verwendet, die als Eingabe bereitgestellt wird.
  • Die Lokalisierung wird verwendet, um die Region und Sprache für den Benutzer genauer anzugeben.
  • Die Art und Weise, wie ein Datum geschrieben wird, ist in verschiedenen Regionen der Welt unterschiedlich. Zum Beispiel wird „31. Dez 2017“ in Indien als „31-12-2017“ geschrieben, während dasselbe in den Vereinigten Staaten von Amerika als „12-31-2017“ geschrieben wird.
  • Die DateFormat-Klassen sind nicht synchronisiert, es wird empfohlen, für jeden Thread eine separate Instanz zu erstellen.

A DateFormat object can be created using the getDateInstance() and getTimeInstance() method of the DateFormat class.

Locale loc = new Locale("en", "US");
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, loc);

Hinweis: Der Konstruktor Locale(String, String) ist seit Version 19 veraltet.

Locale loc = new Locale.Builder().setLanguage("en").setRegion("US").build();

Die Methode getDateInstance von DateFormat benötigt zwei Eingabeparameter. Der erste Parameter gibt das zu verwendende DateFormat an, und der zweite Parameter ist die Locale.

Verwendung von format

Die DateFormat-Klasse verfügt über eine format-Methode, die für die Formatierung verantwortlich ist.

Locale locale = new Locale("fr", "FR");
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, locale);
String date = dateFormat.format(new Date());
System.out.print(date);

Dieser Code formatiert das Datum in der französischen (fr) Sprache und der Region Frankreich (FR):

Output
3 janv. 2018

Verwendung von getTimeInstance()

Um eine Instanz von DateFormat zu erstellen, verwenden wir die Methode getDateInstance().

Für die Formatierung einer Zeit benötigen wir eine Zeitinstanz. Wir verwenden die Methode getTimeInstance(), um eine Zeitinstanz zu erhalten.

Locale locale = new Locale("fr", "FR");
DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale);
String date = dateFormat.format(new Date());
System.out.print(date);

Dieser Code formatiert die Zeit in der französischen (fr) Sprache und der Region Frankreich (FR):

Output
11:03:01

Java SimpleDateFormat

SimpleDateFormat ist ähnlich wie DateFormat. Der einzige wesentliche Unterschied zwischen ihnen ist, dass SimpleDateFormat für das Formatieren (Konvertierung von Date in String) und für das Parsen (String in Date-Konvertierung) mit Unterstützung für die Lokalisierung verwendet werden kann, während DateFormat keine Lokalisierungsunterstützung bietet. DateFormat ist eine abstrakte Klasse, die grundlegende Unterstützung für die Formatierung und das Parsen von Datum bereitstellt. SimpleDateFormat ist die konkrete Klasse, die die Klasse DateFormat erweitert.

SimpleDateFormat kann mithilfe des Konstruktors SimpleDateFormat erstellt werden. Der Konstruktor ist ein parametrisierter Konstruktor und benötigt ein String-Muster als Parameter.

String pattern = "MM-dd-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

Der String muster ist das Muster, das zur Formatierung eines Datums verwendet wird, und die Ausgabe wird in diesem Muster als „MM-dd-yyyy“ generiert.

Muster

Werfen wir einen Blick auf die Mustersyntax, die für das Formatierungsmuster verwendet werden sollte.

Letter for Pattern Date or Time component Examples
G Era designator AD
y Year 2018 (yyyy), 18 (yy)
M Month in year July (MMMM), Jul (MMM), 07 (MM)
w Results in week in year 16
W Results in week in month 3
D Gives the day count in the year 266
d Day of the month 09 (dd), 9(d)
F Day of the week in month 4
E Day name in the week Tuesday, Tue
u Day number of week where 1 represents Monday, 2 represents Tuesday and so on 2
a AM or PM marker AM
H Hour in the day (0-23) 12
k Hour in the day (1-24) 23
K Hour in am/pm for 12 hour format (0-11) 0
h Hour in am/pm for 12 hour format (1-12) 12
m Minute in the hour 59
s Second in the minute 35
S Millisecond in the minute 978
z Timezone Pacific Standard Time; PST; GMT-08:00
Z Timezone offset in hours (RFC pattern) -0800
X Timezone offset in ISO format -08; -0800; -08:00

Einige Buchstaben sollten in unterschiedlicher Menge für unterschiedliche Ergebnisse verwendet werden, wie zum Beispiel für den Monat:

Type Pattern Example Output
Full Month MMMM July
Abbreviated Month MMM Jul
Numeric Month MM 07

Beispiele

Werfen wir nun einen Blick auf einige Beispiele für verschiedene Formate von Datum und Uhrzeit.

Pattern Result
MM/dd/yyyy 01/02/2018
dd-M-yyyy hh:mm:ss 02-1-2018 06:07:59
dd MMMM yyyy 02 January 2018
dd MMMM yyyy zzzz 02 January 2018 India Standard Time
E, dd MMM yyyy HH:mm:ss z Tue, 02 Jan 2018 18:07:59 IST

Mit SimpleDateFormat()

Um ein Datum zu analysieren, müssen wir eine Instanz von SimpleDateFormat mit dem Konstruktor erstellen und dann die Methode format() verwenden:

String pattern = "MM-dd-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String date = simpleDateFormat.format(new Date());
System.out.println(date);

Dieser Code gibt „MM-dd-yyyy“ aus:

Output
01-02-2018

Dieses Muster erzeugt „Monat im Jahr“, „Tag im Monat“ und „Jahr“. Die Art des Zeichens (und die Großschreibung) und die Anzahl der Zeichen tragen zur Zeichenkette bei. Der Monat wird durch zwei Ziffern dargestellt, der Tag durch zwei Ziffern und das Jahr durch vier Ziffern.

Dieser Code zeigte das Datum „2. Januar 2018“ als „01-02-2018„.

Für die Analyse der Zeit müssen wir das Muster beim Erstellen einer Instanz von SimpleDateFormat ändern.

String pattern = "HH:mm:ss.SSSZ";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String date = simpleDateFormat.format(new Date());
System.out.println(date);

Dieser Code gibt „HH:mm:ss.SSSZ“ aus:

Output
13:03:15.454+0530

Dieses Muster erzeugt „Stunden“, „Minuten“, „Sekunden“, „Millisekunden“ und „Zeitzonenoffset in Stunden (RFC-Muster)“.

Dieser Code zeigte die Zeit als „13:03:15.454+0530„.

Mit parse()

Das Parsen ist die Umwandlung eines Strings in eine `java.util.Date`-Instanz. Wir können einen String in eine Datumsinstanz mithilfe der `parse()`-Methode der SimpleDateFormat-Klasse parsen. Um einen String in ein Datum zu parsen, benötigen wir eine Instanz der SimpleDateFormat-Klasse und ein Zeichenfolgenmuster als Eingabe für den Konstruktor der Klasse.

String pattern = "MM-dd-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = simpleDateFormat.parse("12-01-2018");
System.out.println(date);

Dies gibt ein Datum (12-01-2018) ohne eine angegebene Zeit aus:

Output
Sat Dec 01 00:00:00 IST 2018

Jetzt schauen wir uns ein Beispiel mit `SimpleDateFormat` an, um die Zeit zu parsen.

String pattern = "HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = simpleDateFormat.parse("22:00:03");
System.out.println(date);

Dies gibt eine Zeit (22:00:03) ohne ein angegebenes Datum aus:

Output
Thu Jan 01 22:00:03 IST 1970

Weil wir kein Datum angegeben haben, betrachtet das Programm das Epochen-Datum als das Datum (d.h. 01-Jan-1970).

Verwendung von `Locale`

Wir haben mit `Locale` als Teil des `DateFormat` gearbeitet und gesehen, dass Lokalisierungen je nach Region verwendet werden.

String pattern = "EEEEE MMMMM yyyy HH:mm:ss.SSSZ";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern, new Locale("fr", "FR"));
Date date = simpleDateFormat.format(new Date());
System.out.println(date);

Dieser Code formatiert die aktuelle Zeit in der französischen (fr) Sprache und der Region Frankreich (FR):

Output
mardi janvier 2018 14:51:02.354+0530

Der Tag und der Monat werden auf Französisch basierend auf der bereitgestellten `Locale`-Eingabe benannt – `mardi` ist „Dienstag“ und `janvier` ist „Januar“.

Fazit

In diesem Artikel haben Sie über SimpleDateFormat und DateFormat in Java gelernt.

Referenz:

Source:
https://www.digitalocean.com/community/tutorials/java-simpledateformat-java-date-format