it-swarm.com.de

Wie Sie in Java die Zeichenfolgen der Wochentage (Sun, Mo, ..., Sat) mit dem Standardgebietsschema (Sprache) des Systems abrufen

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?

26
Naetmul

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()
44
Blackbelt
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.

8
Juned Ahsan

tl; dr

DayOfWeek.MONDAY.getDisplayName( 
    TextStyle.SHORT , 
    Locale.getDefault() 
)

Java.time

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 );

Über Java.time

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? 

4
Basil Bourque

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.

0
yincrash