Was ist der Zweck der locale-Einstellung in Java-java.util.Kalender?
Ich bin der Beschaffung von Informationen (wie die Anzahl der ein Tag in der Woche, Monat, Jahr usw.) zu bestimmten Datum in Java über java.util.Kalender. Gibt es Grund zu der set locale für die Kalender-Objekt in meiner situation? Ich Frage, weil:
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
gibt für heute (Sonntag) immer die Nummer 1, aber in unserer Region (cs_CZ) sollte es sein, 7.
Locale locale = new Locale("cs", "CZ");
TimeZone tz = TimeZone.getTimeZone("Europe/Prague");
Calendar cal = GregorianCalendar.getInstance(tz, locale);
cal.setTime(new Date());
//returns => 1 (but I expected 7)
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
//returns => 3 - it's OK
System.out.println(cal.get(Calendar.DAY_OF_MONTH));
EDIT: kann ich hadle mit 1 für Sonntag, aber ich muss sicher sein, dass dies unveränderlich Verhalten unabhängig zur verwendeten Gebietsschema oder Zeitzone.
versuchen Sie, beenden Sie das cal.setTime(new Date());
keine änderung
keine änderung
InformationsquelleAutor Artegon | 2013-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Locale tun, wird sich auf den ersten Tag der Woche. Jedoch, der Tag-Werte sind Konstanten, die
SUNDAY
ist immer 1. Sie können überprüfen,dieser link. Dieget()
Methode nur gibt das richtige Feld Wert (Wenn es gibt 7 dann ist es falsch -- 7SATURDAY
, nicht der aktuelle Tag).Aber Sie können rufen Sie
getFirstDayOfWeek()
und es gibt 2 (MONDAY
). Ich denke, das ist, was Sie brauchen. Sie können nehmen Sie den Einsatz dieser beiden Methoden, um Ihr Ziel zu erreichen.Den obigen Aussagen gibt 7.
Calendar cal = GregorianCalendar.getInstance(tz, locale); System.out.println(cal.getTime()); cal.setFirstDayOfWeek(Calendar.MONDAY); System.out.println(cal.get(Calendar.DAY_OF_WEEK));
noch gibt 1 für heute (Sonntag).Sorry, bitte sehen Sie die neuen Bearbeiten. Ich denke, es gab einige Missverständnisse, die Tag-Werte sind Konstanten, die nur die "ersten Tag der Woche" ändert sich mit locales. Sie können auch finden Sie unter diesem link: Woche
Danke, das hat mir geholfen. Und dies ist die Antwort die OP.
InformationsquelleAutor shuangwhywhy
Schließlich ich verwendet Joda Time Bibliothek:
und es gibt 7 für heute (Sonntag).
InformationsquelleAutor Artegon