Datum auf Swing-Komponenten ausgeben: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
| (6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
Die Formatierung von Text-Ausgaben von Objekten auf GUI-Komponenten können von speziell dafür bereitgestellte Klassen deutlich vereinfacht werden. | ==String.format()== | ||
Die Formatierung von Text-Ausgaben von [[Objekt|Objekten]] auf GUI-Komponenten können von speziell dafür bereitgestellte [[Klasse|Klassen]] deutlich vereinfacht werden. | |||
===Beispiel 1=== | |||
Eine recht einfache Variante, schnell und komfortabel ein Datum auf einer Swing-Komponente, wie bspw. einem {{JAPI|JLabel}}, auszugeben, sieht folgendermaßen aus: | Eine recht einfache Variante, schnell und komfortabel ein Datum auf einer Swing-Komponente, wie bspw. einem {{JAPI|JLabel}}, auszugeben, sieht folgendermaßen aus: | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
String dateStr = String.format("%1$te. %1$ | String dateStr = String.format("%1$te. %1$tB %1$tY", new Date()); | ||
JLabel label = new JLabel(dateStr); | JLabel label = new JLabel(dateStr); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Zeile 11: | Zeile 13: | ||
<code>8. Mai 2014</code> | <code>8. Mai 2014</code> | ||
===Beispiel 2=== | |||
<syntaxhighlight lang="java"> | |||
String.format("%1$td.%1$tm.%1$tY - %1$tH:%1$tM:%1$tS", new Date()); | |||
</syntaxhighlight> | |||
Die Ausgabe sieht dann so aus: | |||
<code>10.05.2014 - 14:27:02</code> | |||
===Beispiel 4=== | |||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
String.format("%1$te.%1$ | String.format("%ta, %1$te. %1$tb %1$tY - %1$tT", System.currentTimeMillis()); | ||
</syntaxhighlight> | |||
Die Ausgabe sieht dann so aus: | |||
<code>So, 2. Juni 2019 - 13:25:01</code> | |||
Die Formatierung der Ausgabe lässt sich nahezu beliebig anpassen. Mehr zu den Formatierungsmöglichkeiten von Strings unter {{JAPI|java.util.Formatter}}. | |||
==DateFormat== | |||
Mit Hilfe der Klasse {{JAPI|DateFormat}} lassen sich {{JAPI|Date}}- oder {{JAPI|Calendar}}-Objekte für Textausgaben formatieren. | |||
<syntaxhighlight lang="java"> | |||
DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy - HH:mm:ss"); | |||
String dateText = formatter.format(new Date()); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| Zeile 21: | Zeile 44: | ||
<code>10.05.2014 - 14:27:02</code> | <code>10.05.2014 - 14:27:02</code> | ||
Die | ==java.time== | ||
Die meisten [[Methode|Methoden]] in der [[Klasse]] java.util.Date sind inzwischen deprecated. Oracle selbst spricht von schlechtem API-Design und Problemen mit der Nebenläufigkeit. | |||
In der mit Java 8 eingeführten Time-[[API]] sind nun deutlich bessere und mächtigere Klassen zur Arbeit mit Datum und Zeit zur Verfügung gestellt worden. | |||
===LocalDateTime=== | |||
Die Klasse {{JAPI|LocalDateTime}} repräsentiert ein unveränderliches Datum-Uhrzeit-[[Objekt]] ohne Zeitzone im ISO-8601-Kalendersystem. | |||
<syntaxhighlight lang="java"> | |||
LocalDateTime ldt = LocalDateTime.now(); //ermittelt die komplette Zeiteinheit des aktuellen Zeitpunkts | |||
</syntaxhighlight> | |||
Das so erzeugte Objekt kann nun vollständig anpassbar für die Ausgabe formatiert werden: | |||
===Beispiel 1=== | |||
<syntaxhighlight lang="java"> | |||
System.out.println(ldt); | |||
</syntaxhighlight> | |||
Die Ausgabe sieht dann so aus: | |||
<code>2020-02-20T12:06:30.802378</code> | |||
===Beispiel 2=== | |||
<syntaxhighlight lang="java"> | |||
String format = ldt.format(DateTimeFormatter.ofPattern("dd.MM.yyyy - HH:mm:ss")); | |||
System.out.println(format); | |||
</syntaxhighlight> | |||
Die Ausgabe sieht dann so aus: | |||
<code>20.02.2020 - 12:07:34</code> | |||
===Beispiel 3=== | |||
<syntaxhighlight lang="java"> | |||
String format = ldt.format(DateTimeFormatter.ofPattern("d. MMM yyyy")); | |||
System.out.println(format); | |||
</syntaxhighlight> | |||
Die Ausgabe sieht dann so aus: | |||
<code>20. Feb. 2022</code> | |||
===Beispiel 4=== | |||
<syntaxhighlight lang="java"> | |||
String format = ldt.format(DateTimeFormatter.ofPattern("MMMM")); | |||
System.out.println(format); | |||
</syntaxhighlight> | |||
Die Ausgabe sieht dann so aus: | |||
<code>Februar</code> | |||
[[Kategorie:Swing]] | [[Kategorie:Swing]] | ||
[[Kategorie:Java_Grundlagen]] | [[Kategorie:Java_Grundlagen]] | ||
[[Kategorie:Java-Codeschnipsel]] | [[Kategorie:Java-Codeschnipsel]] | ||
Aktuelle Version vom 20. Februar 2022, 11:14 Uhr
String.format()
[Bearbeiten | Quelltext bearbeiten]Die Formatierung von Text-Ausgaben von Objekten auf GUI-Komponenten können von speziell dafür bereitgestellte Klassen deutlich vereinfacht werden.
Beispiel 1
[Bearbeiten | Quelltext bearbeiten]Eine recht einfache Variante, schnell und komfortabel ein Datum auf einer Swing-Komponente, wie bspw. einem JLabel, auszugeben, sieht folgendermaßen aus:
String dateStr = String.format("%1$te. %1$tB %1$tY", new Date());
JLabel label = new JLabel(dateStr);
Die Ausgabe sieht dann so aus:
8. Mai 2014
Beispiel 2
[Bearbeiten | Quelltext bearbeiten]String.format("%1$td.%1$tm.%1$tY - %1$tH:%1$tM:%1$tS", new Date());
Die Ausgabe sieht dann so aus:
10.05.2014 - 14:27:02
Beispiel 4
[Bearbeiten | Quelltext bearbeiten]String.format("%ta, %1$te. %1$tb %1$tY - %1$tT", System.currentTimeMillis());
Die Ausgabe sieht dann so aus:
So, 2. Juni 2019 - 13:25:01
Die Formatierung der Ausgabe lässt sich nahezu beliebig anpassen. Mehr zu den Formatierungsmöglichkeiten von Strings unter java.util.Formatter.
DateFormat
[Bearbeiten | Quelltext bearbeiten]Mit Hilfe der Klasse DateFormat lassen sich Date- oder Calendar-Objekte für Textausgaben formatieren.
DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy - HH:mm:ss");
String dateText = formatter.format(new Date());
Die Ausgabe sieht dann so aus:
10.05.2014 - 14:27:02
java.time
[Bearbeiten | Quelltext bearbeiten]Die meisten Methoden in der Klasse java.util.Date sind inzwischen deprecated. Oracle selbst spricht von schlechtem API-Design und Problemen mit der Nebenläufigkeit.
In der mit Java 8 eingeführten Time-API sind nun deutlich bessere und mächtigere Klassen zur Arbeit mit Datum und Zeit zur Verfügung gestellt worden.
LocalDateTime
[Bearbeiten | Quelltext bearbeiten]Die Klasse LocalDateTime repräsentiert ein unveränderliches Datum-Uhrzeit-Objekt ohne Zeitzone im ISO-8601-Kalendersystem.
LocalDateTime ldt = LocalDateTime.now(); //ermittelt die komplette Zeiteinheit des aktuellen Zeitpunkts
Das so erzeugte Objekt kann nun vollständig anpassbar für die Ausgabe formatiert werden:
Beispiel 1
[Bearbeiten | Quelltext bearbeiten]System.out.println(ldt);
Die Ausgabe sieht dann so aus:
2020-02-20T12:06:30.802378
Beispiel 2
[Bearbeiten | Quelltext bearbeiten]String format = ldt.format(DateTimeFormatter.ofPattern("dd.MM.yyyy - HH:mm:ss"));
System.out.println(format);
Die Ausgabe sieht dann so aus:
20.02.2020 - 12:07:34
Beispiel 3
[Bearbeiten | Quelltext bearbeiten]String format = ldt.format(DateTimeFormatter.ofPattern("d. MMM yyyy"));
System.out.println(format);
Die Ausgabe sieht dann so aus:
20. Feb. 2022
Beispiel 4
[Bearbeiten | Quelltext bearbeiten]String format = ldt.format(DateTimeFormatter.ofPattern("MMMM"));
System.out.println(format);
Die Ausgabe sieht dann so aus:
Februar
