Gibt es ein Datumsformat, um den Wochentag in Java anzuzeigen?

127

Ich kenne Datumsformate wie
"yyyy-mm-dd"- das Datum im Format 2011-02-26
"yyyy-MMM-dd"anzeigt - das Datum im Format anzeigt2011-FEB-26

zur Verwendung in zB:

SimpleDateFormat formatter = new SimpleDateFormat(
                "yyyy/MMM/dd ");

Ich möchte ein Format, das mir hilft, den Wochentag wie 2011-02-MONoder so anzuzeigen . Ich möchte nur, dass der Wochentag in Zeichen mit dem Monat und dem Jahr angezeigt wird. Können Sie mir ein solches Format nennen?

Rogerstein
quelle
1
Wie wäre es einfach ddals Format zu verwenden?
Johan Sjöberg
3
Ich bin sicher, dass die API-Dokumente ( download.oracle.com/javase/1.4.2/docs/api/java/text/… ) Ihnen gerne eine Antwort geben würden.
M. Jessup
1
Was meinst du mit "Tag" - Wochentag, Tag des Monats. In Ihrem Beispiel wird das gesamte Datum angezeigt. Bitte zeigen Sie die genaue Ein- und Ausgabe, die Sie möchten.
Bozho
2
Verwenden Sie die -Notation allgemein nur mit Datumsangaben im ISO-Format (dh Jahr-Monat-Tag). Der Bindestrich wurde dort gewählt, da er zu diesem Zeitpunkt nicht für andere Datumsformate verwendet wurde, um Verwirrung zu vermeiden, und jetzt verwendet jeder seine benutzerdefinierte Bestellung mit dem Bindestrich ...
Paŭlo Ebermann

Antworten:

321

Dies sollte 'Di' anzeigen:

new SimpleDateFormat("EEE").format(new Date());

Dies sollte 'Dienstag' anzeigen:

new SimpleDateFormat("EEEE").format(new Date());

Dies sollte 'T' anzeigen:

new SimpleDateFormat("EEEEE").format(new Date());

Ihr konkretes Beispiel wäre also:

new SimpleDateFormat("yyyy-MM-EEE").format(new Date());
Nathan Feger
quelle
5
Schöne Lösung! Was ich gesucht habe war: Montag, 04.04.2016. Also in meinem Fall, new SimpleDateFormat("EEEE, dd/MM/yyyy");wenn es jemandem in der Zukunft hilft.
AuroMetal
1
OK, es funktioniert. EEEEzeigt ganze Namen des Wochentags an - dh 'Montag', 'Dienstag' usw.
kosiara - Bartosz Kosarzycki
Ich hatte nicht wirklich daran gedacht, dass es diese Seite überhaupt geben würde, geschweige denn, dass Java endlich dazu kommen würde, bei Date auf Kaution zu gehen. Es beantwortet technisch die OP-Frage. Allerdings kann ich wahrscheinlich einen neuen Abschnitt hinzufügen, wie das neue java.time-Zeug funktioniert
Nathan Feger
18

Ja - 'E' macht den Trick

http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

Date date = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-E");
System.out.println(df.format(date));
Toolkit
quelle
5
Orakel in der URL der Javadocs zu sehen, fühlt sich immer noch seltsam an.
Nathan Feger
Wir verwenden auch: DateFormat df = new SimpleDateFormat("yyyy-MM-EEEEEEE");für die Anzeige langer DayOfWeek.
Mach Nhu Vy
4
SimpleDateFormat sdf=new SimpleDateFormat("EEE");

EEE steht für Wochentag, zum Beispiel wird Donnerstag als Do angezeigt.

user2824143
quelle
3

tl; dr

LocalDate.of( 2018 , Month.JANUARY , 23 )
         .format( DateTimeFormatter.ofPattern( uuuu-MM-EEE , Locale.US )  )

java.time

Der moderne Ansatz verwendet die Klassen java.time.

LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ;

Beachten Sie, wie wir angeben Locale, wie Locale.CANADA_FRENCHdie menschliche Sprache zu bestimmen , verwendet , um den Namen des Tages zu übersetzen.

DateTimeFormatter f = DateTimeFormatter.ofPattern( uuuu-MM-EEE , Locale.US ) ;
String output = ld.format( f ) ;

ISO 8601

Übrigens könnte Sie das Standard- Wochennummerierungsschema ISO 8601 interessieren : yyyy-Www-d.

2018-W01-2

Woche 1 hat den ersten Donnerstag des Kalenderjahres. Die Woche beginnt an einem Montag. Ein Jahr hat entweder 52 oder 53 Wochen. Die letzten / ersten Tage eines Kalenderjahres können im nächsten / vorherigen wochenbasierten Jahr landen.

Die einzelne Ziffer am Ende ist Wochentag, 1-7 für Montag-Sonntag.

Fügen Sie Ihrem Projekt die ThreeTen-Extra- Bibliotheksklasse für die YearWeekKlasse hinzu.


Über java.time

Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Legacy - Datum-Zeit - Klassen wie java.util.Date, Calendar, & SimpleDateFormat.

Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration zu den Klassen java.time .

Weitere Informationen finden Sie im Oracle-Lernprogramm . Suchen Sie im Stapelüberlauf nach vielen Beispielen und Erklärungen. Die Spezifikation ist JSR 310 .

Woher bekomme ich die java.time-Klassen?

Das ThreeTen-Extra- Projekt erweitert java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Ergänzungen von java.time. Sie können einige nützliche Klassen hier wie finden Interval, YearWeek, YearQuarter, und mehr .

Basil Bourque
quelle
2

Ich weiß, dass es bei der Frage darum geht, den Wochentag als Zeichenfolge zu erhalten (z. B. den Kurznamen), aber für alle, die nach dem numerischen Wochentag suchen (wie ich es war), können Sie die neue Zeichenfolge im "u" -Format verwenden, die unterstützt wird seit Java 7. Zum Beispiel:

new SimpleDateFormat("u").format(new Date());

gibt den heutigen Wochentagsindex zurück, nämlich: 1 = Montag, 2 = Dienstag, ..., 7 = Sonntag.

Sal Borrelli
quelle