Der einfachste Weg:
String[] namesOfDays = new String[7] {
"Sun", "MON", "TUE", "WED", "THU", "FRI", "SAT"
};
Diese Methode verwendet kein Gebietsschema. Wenn die Systemsprache nicht Englisch ist, funktioniert diese Methode daher nicht ordnungsgemäß.
Mit der Joda-Zeit können wir so vorgehen:
String[] namesOfDays = new String[7];
LocalDate now = new LocalDate();
for (int i=0; i<7; i++) {
/* DateTimeConstants.MONDAY = 1, TUESDAY = 2, ..., SUNDAY = 7 */
namesOfDays[i] = now.withDayOfWeek((DateTimeConstants.SUNDAY + i - 1) % 7 + 1)
.dayOfWeek().getAsShortText();
}
Diese Methode verwendet jedoch die heutigen Datums- und Kalenderberechnungen, die für den endgültigen Zweck unbrauchbar sind. Es ist auch etwas kompliziert.
Gibt es eine einfache Möglichkeit, Zeichenfolgen wie "Sun"
, "Mon"
, ..., "Sat"
mit der Standardeinstellung des Systems zu erhalten?
Wenn ich dich nicht falsch verstanden habe
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US);
ist was Sie suchen. Hier finden Sie die Dokumentation,
Oder Sie können auch getShortWeekdays () verwenden.
String[] namesOfDays = DateFormatSymbols.getInstance().getShortWeekdays()
Date now = new Date();
// EEE gives short day names, EEEE would be full length.
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE", Locale.US);
String asWeek = dateFormat.format(now);
Sie können das Datum mit dem gewünschten Datum und der gewünschten Uhrzeit erstellen. Und erreichen Sie, was Sie wollen.
DayOfWeek.MONDAY.getDisplayName(
TextStyle.SHORT ,
Locale.getDefault()
)
Das Joda-Time - Projekt, jetzt im Wartungsmodus , empfiehlt die Migration zu den Java.time -Klassen. Ein Großteil von Java.time ist auf Android portiert (siehe unten).
DayOfWeek
Die DayOfWeek
-Aufzählung definiert sieben Objekte, eines für jeden Wochentag. Die Klasse bietet mehrere praktische Methoden, einschließlich getDisplayName
zum Generieren einer Zeichenfolge mit lokalisiertem Tagesnamen.
Geben Sie zum Lokalisieren Folgendes an:
TextStyle
um zu bestimmen, wie lang oder abgekürzt die Zeichenfolge sein soll.Locale
um (a) die menschliche Sprache für die Übersetzung des Tages- und Monatsnamens usw. zu bestimmen, und (b) die kulturellen Normen, die über Abkürzungen, Großschreibung, Satzzeichen, Trennzeichen und dergleichen entscheiden.Beispiel:
String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.SHORT , Locale.CANADA_FRENCH );
Sie können die aktuelle Standardzeitzone der JVM verwenden, anstatt eine anzugeben. Beachten Sie jedoch das Risiko: Die Standardzone kann jederzeit während der Ausführung von beliebigem Code in einem beliebigen Thread einer beliebigen Anwendung in der JVM geändert werden.
Locale locale = Locale.getDefault() ;
String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.SHORT , locale );
Das Java.time -Framework ist in Java 8 und höher integriert. Diese Klassen ersetzen die lästigen alten Legacy Date-Time-Klassen wie Java.util.Date
, Calendar
, & SimpleDateFormat
.
Das Joda-Time - Projekt, jetzt im Wartungsmodus , empfiehlt die Migration zu den Java.time -Klassen.
Weitere Informationen finden Sie im Oracle Tutorial . In Stack Overflow finden Sie viele Beispiele und Erklärungen. Spezifikation ist JSR 310 .
Wo erhalten Sie die Java.time-Klassen?
Ohne 1.8 können Sie DateFormatSymbols
verwenden (was auch mit Android funktioniert).
DateFormatSymbols.getWeekdays()
Rückgabe: die Wochentagszeichenfolgen. Verwenden Sie Calendar.SUNDAY, Calendar.MONDAY, usw., um das Ergebnis-Array zu indizieren.