Heim >Backend-Entwicklung >Golang >Wie berechnet man einen Datumsbereich anhand einer Wochennummer in Golang?

Wie berechnet man einen Datumsbereich anhand einer Wochennummer in Golang?

Linda Hamilton
Linda HamiltonOriginal
2024-12-31 10:01:08758Durchsuche

How to Calculate a Date Range Given a Week Number in Golang?

Datumsbereich nach Wochennummer in Golang

Hintergrund:

Time.ISOWeek() gibt die Wochennummer zurück, die am Montag beginnt. In diesem Artikel wird gezeigt, wie Sie den Datumsbereich für eine bestimmte Woche erhalten, vorausgesetzt, sie beginnt am Sonntag.

Lösung:

  1. Berechnen Sie den Wochenanfang :

Beginnen Sie mit der Ausrichtung auf den ersten Tag der Woche (Montag) ab Mitte der Woche Jahr. Korrigieren Sie, indem Sie Tage basierend auf der Wochendifferenz multipliziert mit 7 hinzufügen.

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
}
  1. Berechnen Sie den Wochenbereich:

Um den Datumsbereich zu erhalten , bestimmen Sie den ersten Tag der Woche und addieren Sie 6 Tage, um den letzten zu erhalten Tag.

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

Beispiel:

fmt.Println(WeekRange(2018, 1))
fmt.Println(WeekRange(2018, 2))
fmt.Println(WeekRange(2019, 1))
fmt.Println(WeekRange(2019, 2))

Ausgabe (versuchen Sie es auf dem Go Playground):

2018-01-01 00:00:00 +0000 UTC 2018-01-07 00:00:00 +0000 UTC
2018-01-08 00:00:00 +0000 UTC 2018-01-14 00:00:00 +0000 UTC
2018-12-31 00:00:00 +0000 UTC 2019-01-06 00:00:00 +0000 UTC
2019-01-07 00:00:00 +0000 UTC 2019-01-13 00:00:00 +0000 UTC

Zusätzlicher Hinweis:

Die WeekStart()-Funktion verwaltet Wochen außerhalb des Bereichs. Wochen außerhalb des Jahresbereichs werden als letzte bzw. erste Woche des vorherigen bzw. nachfolgenden Jahres interpretiert.

Das obige ist der detaillierte Inhalt vonWie berechnet man einen Datumsbereich anhand einer Wochennummer in Golang?. 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