>백엔드 개발 >Golang >Golang에서 주 번호가 지정된 날짜 범위를 계산하는 방법은 무엇입니까?

Golang에서 주 번호가 지정된 날짜 범위를 계산하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-31 10:01:08744검색

How to Calculate a Date Range Given a Week Number in Golang?

Golang의 주 번호별 날짜 범위

배경:

Time.ISOWeek() 월요일에 시작하는 주 번호를 반환합니다. 이 문서에서는 일요일부터 시작한다고 가정하고 해당 주의 날짜 범위를 구하는 방법을 보여줍니다.

해결책:

  1. 주 시작 계산 :

개강 첫날에 맞춰 시작하세요. 연중부터 일주일(월요일). 주 차이에 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
}
  1. 주 범위 계산:

날짜 범위를 얻으려면 , 주의 첫날을 결정하고 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.