java bekommen die Woche des Jahres für ein gegebenes Datum

8

Wie kann ich eine Woche des Jahres mit einem Datum bekommen? Ich habe den folgenden Code ausprobiert:

%Vor%

und ich erhalte: sDateCalendar lun 23. April 11:58:39 MESZ 2012 iStartWeek 2012 3

während die korrekte Woche des Jahres 17 ist. Kann mir jemand helfen?

    
famedoro 23.04.2012, 10:00
quelle

3 Antworten

13

Sie verwenden sDateCalendar.WEEK_OF_YEAR, das ist die statische Ganzzahl WEEK_OF_YEAR, siehe die Quelle der Klasse java.util.Calendar:

%Vor%

Um die Wochennummer zu erhalten, sollten Sie Folgendes verwenden:

%Vor%     
verhage 23.04.2012, 10:06
quelle
16

eleganter Weg (keine Notwendigkeit für java.util.Calendar):

%Vor%     
martinnovoty 06.09.2013 12:00
quelle
9

Definition einer Woche

Sie müssen die Woche des Jahres definieren.

  • Eine übliche Definition ist, dass Woche 1 den 1. Januar hat.
  • Einige gemeine Woche # 1 ist die erste Woche des Jahres, die den ersten Tag der Woche (wie Sonntag in den Vereinigten Staaten) hält.
  • Der Standard ISO 8601 ist diese Woche # 1 hält den ersten Donnerstag und die Woche beginnt immer mit einem Montag. Ein Jahr kann 52 oder 53 Wochen haben. In der ersten / letzten Woche kann sich ein wochenbasiertes Jahr vom Kalenderjahr unterscheiden.

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.time

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:

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.

%Vor%     
Basil Bourque 18.01.2016 01:59
quelle

Tags und Links