Julat Tarikh mengikut Nombor Minggu di Golang
Menyelesaikan Percanggahan Nombor Minggu
Masa. Fungsi ISOWeek() dalam pustaka standard Go mengembalikan nombor minggu ISO, yang bermula pada hari Isnin. Walau bagaimanapun, nampaknya anda memerlukan nombor minggu berdasarkan tarikh mula Ahad.
Utiliti Tersuai
Untuk menangani isu ini, mari gunakan fungsi utiliti tersuai untuk mendapatkan yang diingini julat tarikh:
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 }
Minggu Julat
Jika anda memerlukan kedua-dua tarikh mula dan tamat untuk minggu yang ditentukan, anda boleh menggunakan fungsi berikut:
func WeekRange(year, week int) (start, end time.Time) { start = WeekStart(year, week) end = start.AddDate(0, 0, 6) return }
Sampel Output
fmt.Println(WeekRange(2018, 1)) fmt.Println(WeekRange(2018, 52))
Output
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
Nota: Kaedah ini mengendalikan minggu luar julat dengan mentafsir 0 sebagai minggu terakhir tahun sebelumnya, -1 sebagai minggu kedua hingga terakhir tahun sebelumnya, dan seterusnya.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Julat Tarikh Berdasarkan Nombor Minggu dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!