Heim >Backend-Entwicklung >Golang >Wie berechnet man den Datumsbereich für eine bestimmte Wochennummer in Go?

Wie berechnet man den Datumsbereich für eine bestimmte Wochennummer in Go?

Linda Hamilton
Linda HamiltonOriginal
2024-12-05 02:23:10952Durchsuche

How to Calculate the Date Range for a Given Week Number in Go?

Datumsbereich nach Wochennummer in Go

Anhand der Wochennummer, die mit der bereitgestellten Wochenfunktion ermittelt wurde, wird in diesem Artikel erläutert, wie die entsprechende ermittelt wird Datumsbereich ab Sonntag.

Vorwort: ISO-Woche und Benutzerdefiniert Handhabung

Es ist wichtig zu beachten, dass die Standard-ISO-Woche am Montag beginnt. Um sich an diese Konvention anzupassen, behandelt der folgende Ansatz Wochen, die entweder am Montag oder am Sonntag beginnen.

Bestimmung des Wochenbereichs

Um den Datumsbereich einer Woche zu bestimmen, gehen wir wie folgt vor:

  1. Beginnen Sie ab Mitte des Jahres (1. Juli).
  2. Richten Sie sich auf den ersten Tag des Jahres aus die Woche (standardmäßig Montag).
  3. Rufen Sie die Wochennummer dieses Zeitwerts ab.
  4. Korrigieren Sie, indem Sie Tage basierend auf der Wochendifferenz addieren oder subtrahieren.

Implementierung:

func WeekStart(year, week int) time.Time {
    t := time.Date(year, 7, 1, 0, 0, 0, 0, time.UTC)
    if wd := t.Weekday(); wd == time.Sunday {
        t = t.AddDate(0, 0, -6)
    } else {
        t = t.AddDate(0, 0, -int(wd)+1)
    }
    _, w := t.ISOWeek()
    t = t.AddDate(0, 0, (week-w)*7)
    return t
}

Beispiel Verwendung:

fmt.Println(WeekStart(2018, 1))
// Output: 2018-01-01 00:00:00 +0000 UTC
fmt.Println(WeekStart(2018, 2))
// Output: 2018-01-08 00:00:00 +0000 UTC

Umgang mit Wochen außerhalb des Bereichs:

Diese Implementierung behandelt Wochen außerhalb des Bereichs elegant und interpretiert sie als Wochen von das vorherige oder nächste Jahr.

Bestimmung des Endes von Woche:

Um den letzten Tag der Woche zu erhalten, addieren Sie einfach 6 Tage zum ersten Tag der Woche:

func WeekRange(year, week int) (start, end time.Time) {
    start = WeekStart(year, week)
    end = start.AddDate(0, 0, 6)
    return
}

Das obige ist der detaillierte Inhalt vonWie berechnet man den Datumsbereich für eine bestimmte Wochennummer in Go?. 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