Julat Tarikh mengikut Nombor Minggu di Golang
Latar Belakang:
Masa.ISOWeek() mengembalikan nombor minggu yang bermula pada hari Isnin. Artikel ini menunjukkan cara mendapatkan julat tarikh untuk minggu tertentu, dengan mengandaikan ia bermula dari Ahad.
Penyelesaian:
Mulakan dengan menjajarkan ke hari pertama dalam minggu (Isnin) dari pertengahan tahun. Gabungkan dengan menambah hari berdasarkan perbezaan minggu didarab dengan 7.
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 }
Untuk mendapatkan julat tarikh , tentukan hari pertama minggu dan tambah 6 hari untuk mendapatkan hari terakhir hari.
func WeekRange(year, week int) (start, end time.Time) { start = WeekStart(year, week) end = start.AddDate(0, 0, 6) return }
Contoh:
fmt.Println(WeekRange(2018, 1)) fmt.Println(WeekRange(2018, 2)) fmt.Println(WeekRange(2019, 1)) fmt.Println(WeekRange(2019, 2))
Output (cuba di Taman Permainan Go):
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
Nota Tambahan:
Fungsi WeekStart() menguruskan minggu di luar julat. Minggu di luar julat tahun masing-masing ditafsirkan sebagai minggu terakhir atau pertama tahun sebelumnya atau berikutnya.
Atas ialah kandungan terperinci Bagaimana Mengira Julat Tarikh Diberi Nombor Minggu di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!