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
Freigeben: 2024-12-31 10:01:08
Original
758 Leute haben es durchsucht

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
}
Nach dem Login kopieren
  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
}
Nach dem Login kopieren

Beispiel:

fmt.Println(WeekRange(2018, 1))
fmt.Println(WeekRange(2018, 2))
fmt.Println(WeekRange(2019, 1))
fmt.Println(WeekRange(2019, 2))
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage