Heim >Backend-Entwicklung >C++ >Wie erhalte ich die korrekte ISO-8601-Wochennummer für ein beliebiges Datum?

Wie erhalte ich die korrekte ISO-8601-Wochennummer für ein beliebiges Datum?

DDD
DDDOriginal
2025-01-25 12:16:10591Durchsuche

How to Get the Correct ISO-8601 Week Number for Any Given Date?

Erhalten Sie die richtige Woche des angegebenen Datums gemäß ISO-8601 Standard

Herausforderung:

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:

<code class="language-csharp">// 假设周从星期一开始。
// 第 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);
}</code>
Diese Funktion wird das Datum am Montag, Dienstag oder Mittwoch anpassen, um sicherzustellen, dass sie die gleiche Woche wie der bevorstehende Donnerstag, Freitag oder Samstag darstellt. Diese Methode erfüllt den ISO-8601-Standard, der die erste Woche als erste Donnerstagwoche definiert.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn