eleganter Weg (keine Notwendigkeit für java.util.Calendar):
%Vor%Sie müssen die Woche des Jahres definieren.
Beachten Sie, dass die alte Klasse java.util.Calendar eine Definition der Woche enthält, die sich nach Gebietsschema .
Aus vielen Gründen sollten Sie die alten Klassen java.util.Date/.Calendar vermeiden. Verwenden Sie stattdessen das neue java.time-Framework.
Java 8 und neuer kommt mit der java.time Rahmen. Inspiriert von Joda-Time , definiert durch JSR 310, und erweitert durch ThreeTen-Extra Projekt. Siehe Lernprogramm .
Hier ist ein Beispielcode, um die ISO 8601 Standardwoche zu bekommen.
Das Abrufen eines Datums und damit einer Woche hängt von der Zeitzone ab.
%Vor% Die Klasse IsoFields
definiert eine Woche Basisjahr. Wir können nach dem fragen:
WEEK_OF_WEEK_BASED_YEAR
) WEEK_BASED_YEAR
). Zuerst erhalten wir die aktuelle Datum-Uhrzeit.
%Vor%Fragen Sie das Datum-Zeit-Objekt ab und fragen Sie nach dem Standardwoche-basierten Jahr.
%Vor%Dump zur Konsole.
%Vor%jetzt: 2016-01-17T20: 55: 27.263-05: 00 [America / Montreal] ist Woche: 2 von WocheJahr: 2016
Weitere Informationen finden Sie in dieser ähnlichen Frage: So berechnen Sie das Datum aus der ISO8601-Wochennummer in Java
WeekFields
In java.time können Sie auch die WeekFields
aufrufen. WeekFields.ISO.weekBasedYear()
. Sollte in späteren Versionen von Java 8 oder höher denselben Effekt haben wie IsoFields
(einige Fehler wurden in früheren Versionen von behoben ) Java 8).
YearWeek
Denken Sie bei Standard-ISO-8601-Wochen daran, Ihrem Projekt die ThreeTen-Extra Bibliothek hinzuzufügen, um YearWeek
Klasse.