Heim >Backend-Entwicklung >C++ >Wie berechnet man ein Datum aus einer Wochennummer in C# unter Verwendung von ISO 8601?

Wie berechnet man ein Datum aus einer Wochennummer in C# unter Verwendung von ISO 8601?

Linda Hamilton
Linda HamiltonOriginal
2025-01-14 13:12:43728Durchsuche

How to Calculate a Date from a Week Number in C# Using ISO 8601?

Datum anhand der Wochennummer berechnen

Viele Programmieraufgaben erfordern die Berechnung des entsprechenden Datums anhand einer vorgegebenen Wochennummer. In C# kann dies mithilfe des ISO 8601-Standards erreicht werden.

Der ISO 8601-Standard beginnt die erste Woche am ersten Donnerstag eines jeden Jahres statt am Montag. Unter Ausnutzung dieser Konvention ermittelt der folgende Code genau den ersten Tag einer bestimmten Woche in einem bestimmten Jahr:

<code class="language-csharp">public static DateTime FirstDateOfWeekISO8601(int year, int weekOfYear)
{
    DateTime jan1 = new DateTime(year, 1, 1);
    int daysOffset = DayOfWeek.Thursday - jan1.DayOfWeek;

    DateTime firstThursday = jan1.AddDays(daysOffset);
    var cal = CultureInfo.CurrentCulture.Calendar;
    int firstWeek = cal.GetWeekOfYear(firstThursday, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

    var weekNum = weekOfYear;
    if (firstWeek == 1)
    {
        weekNum -= 1;
    }

    var result = firstThursday.AddDays(weekNum * 7);
    return result.AddDays(-3);
}</code>

Dieser Code löst den Fall, dass der erste Donnerstag nicht die erste Woche des Jahres ist. Durch Subtrahieren von drei Tagen vom ersten Donnerstag wird Montag korrekt als erster Tag der angegebenen Woche gemäß ISO 8601-Standard zurückgegeben.

Das obige ist der detaillierte Inhalt vonWie berechnet man ein Datum aus einer Wochennummer in C# unter Verwendung von ISO 8601?. 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