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:
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!