Golang의 주 번호별 날짜 범위
배경:
Time.ISOWeek() 월요일에 시작하는 주 번호를 반환합니다. 이 문서에서는 일요일부터 시작한다고 가정하고 해당 주의 날짜 범위를 구하는 방법을 보여줍니다.
해결책:
개강 첫날에 맞춰 시작하세요. 연중부터 일주일(월요일). 주 차이에 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 }
날짜 범위를 얻으려면 , 주의 첫날을 결정하고 6일을 추가하여 마지막 날을 구합니다. day.
func WeekRange(year, week int) (start, end time.Time) { start = WeekStart(year, week) end = start.AddDate(0, 0, 6) return }
예:
fmt.Println(WeekRange(2018, 1)) fmt.Println(WeekRange(2018, 2)) fmt.Println(WeekRange(2019, 1)) fmt.Println(WeekRange(2019, 2))
출력(Go Playground에서 시도해 보세요):
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
추가 참고 사항:
The WeekStart() 기능은 범위를 벗어난 주를 관리합니다. 연도 범위를 벗어난 주는 각각 전년도 또는 다음 연도의 마지막 주로 또는 첫 번째 주로 해석됩니다.
위 내용은 Golang에서 주 번호가 지정된 날짜 범위를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!