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
Freigeben: 2025-01-25 12:16:10
Original
572 Leute haben es durchsucht

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:

// 假设周从星期一开始。
// 第 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);
}
Nach dem Login kopieren
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!

Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage