>백엔드 개발 >Golang >Go에서 주어진 주 번호에 대한 날짜 범위를 계산하는 방법은 무엇입니까?

Go에서 주어진 주 번호에 대한 날짜 범위를 계산하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-05 02:23:10934검색

How to Calculate the Date Range for a Given Week Number in Go?

Go의 주 번호별 날짜 범위

제공된 Week 함수를 사용하여 얻은 주 번호가 주어지면 이 기사에서는 해당 주 번호를 확인하는 방법을 탐색합니다. 날짜 범위는 일요일부터 시작됩니다.

머리말: ISO 주간 및 사용자 정의 처리

표준 ISO 주간이 월요일에 시작된다는 점에 유의하는 것이 중요합니다. 이 규칙에 적응하기 위해 다음 접근 방식은 월요일 또는 일요일부터 시작하는 주를 처리합니다.

주 범위 결정

주의 날짜 범위를 결정하려면 다음을 수행합니다.

  1. 연중(7월)부터 시작 1st).
  2. 주의 첫 번째 요일(기본적으로 월요일)로 정렬합니다.
  3. 이 시간 값의 주 번호를 가져옵니다.
  4. 일을 더하거나 빼서 교정합니다. 주를 기준으로 차이.

구현:

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
}

사용 예:

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

처리 범위를 벗어남 주:

이 구현은 범위를 벗어난 주를 적절하게 처리하여 이를 전년도 또는 내년의 주로 해석합니다.

주말 결정:

한 주의 마지막 날을 구하려면 해당 주의 첫 번째 날에 6일을 더하면 됩니다. 요일:

func WeekRange(year, week int) (start, end time.Time) {
    start = WeekStart(year, week)
    end = start.AddDate(0, 0, 6)
    return
}

위 내용은 Go에서 주어진 주 번호에 대한 날짜 범위를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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