Heim > Backend-Entwicklung > Golang > Wie erhalte ich in Go einen Datumsbereich basierend auf der Wochennummer?

Wie erhalte ich in Go einen Datumsbereich basierend auf der Wochennummer?

Linda Hamilton
Freigeben: 2024-12-07 05:55:19
Original
681 Leute haben es durchsucht

How to Get a Date Range Based on Week Number in Go?

Datumsbereich nach Wochennummer in Golang

Beheben von Abweichungen bei der Wochennummer

Die Uhrzeit. Die Funktion ISOWeek() in der Go-Standardbibliothek gibt die ISO-Wochennummer zurück, die am Montag beginnt. Es scheint jedoch, dass Sie Wochennummern benötigen, die auf einem Startdatum am Sonntag basieren.

Benutzerdefiniertes Dienstprogramm

Um dieses Problem zu beheben, verwenden wir eine benutzerdefinierte Dienstprogrammfunktion, um das gewünschte zu erhalten Datumsbereich:

import "time"

func WeekStart(year, week int) time.Time {
    // Align to first day of the week (Sunday) and correct week number
    t := time.Date(year, time.July, 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)
    }
    t = t.AddDate(0, 0, (week-1)*7)
    return t
}
Nach dem Login kopieren

Wochenbereich

Wenn Sie sowohl den Anfang als auch das Ende benötigen Daten für die angegebene Woche können Sie die folgende Funktion verwenden:

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

Beispielausgabe

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

Ausgabe

2018-01-01 00:00:00 +0000 UTC 2018-01-07 00:00:00 +0000 UTC
2018-12-24 00:00:00 +0000 UTC 2018-12-30 00:00:00 +0000 UTC
Nach dem Login kopieren

Hinweis: Diese Methode behandelt Wochen außerhalb des Bereichs, indem sie 0 als letzte Woche interpretiert des Vorjahres, -1 als vorletzte Woche des Vorjahres usw.

Das obige ist der detaillierte Inhalt vonWie erhalte ich in Go einen Datumsbereich basierend auf der Wochennummer?. 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