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
Freigeben: 2024-12-05 02:23:10
Original
875 Leute haben es durchsucht

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

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

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

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!

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