Die korrekte Anzahl des angegebenen Datums kann schwierig sein, insbesondere wenn es sich um das Jahresende handelt. Die vorhandene .NET-Methode kann normalerweise nicht an den ISO-8601-Standard einhalten, und es gibt Fehler für einige Daten zu.
Die falsche Fehlerwoche:
Zum Beispiel kann die .NET-Methode den Standard am 31. Dezember 2012 bis zum 53. feststellen, dies ist jedoch gemäß dem ISO-8601-Standard falsch. Dieser Unterschied stammt aus der .NET-Erlasse, die die Woche über das Jahr umfasst, während ISO-8601 dies nicht ist.
Lösung:
Um die richtige ISO-8601-Woche zu erhalten, verwenden Sie bitte die folgenden Funktionen:
Prinzip Beschreibung:
// 假设周从星期一开始。 // 第 1 周是当年包含星期四的第一周。 public static int GetIso8601WeekOfYear(DateTime time) { DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time); if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday) { time = time.AddDays(3 - (int)day); } else if (day > DayOfWeek.Wednesday) { time = time.AddDays(10 - (int)day); } return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); }
Beispiel:
Am 31. Dezember 2012, was in der Herausforderung erwähnt wurde, gab diese Funktion 1 zurück, was laut ISO-8601-Standard die richtige Woche ist.
Das obige ist der detaillierte Inhalt vonWie erhalte ich die korrekte ISO-8601-Wochennummer für ein beliebiges Datum?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!