> 백엔드 개발 > Golang > Go의 주 번호에서 날짜 범위를 얻는 방법은 무엇입니까?

Go의 주 번호에서 날짜 범위를 얻는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-08 07:52:12
원래의
932명이 탐색했습니다.

How to Get a Date Range from a Week Number in Go?

Golang의 주 번호별 날짜 범위

소개

주어진 주 번호에 해당하는 날짜 범위를 결정하는 것은 다음과 같습니다. 많은 응용 프로그램의 공통 요구 사항입니다. Golang은 주 번호를 얻는 편리한 기능을 제공하지만 해당 날짜 범위를 검색하는 기본 제공 메커니즘이 부족합니다. 이 기사에서는 이 문제를 해결하기 위한 실용적인 Golang 솔루션을 제시합니다.

사용자 정의 함수 구현

특정 주의 날짜 범위를 설정하려면 다음 단계를 수행해야 합니다. :

  1. 월요일에 정렬: As Time.ISOWeek()는 다음과 정렬됩니다. 월요일, 현재 시간을 해당 연도의 첫 번째 월요일로 설정하여 시작합니다.
  2. 주 번호 찾기: Time.ISOWeek()를 사용하여 이 시간의 주 번호를 계산합니다.
  3. 주 차이 조정: 목표 주 수와 현재 주 수의 차이를 확인하고 시간을 조정합니다.

이러한 원칙을 바탕으로 다음과 같이 WeekStart()라는 사용자 정의 함수를 만들 수 있습니다.

func WeekStart(year, week int) time.Time {
    // Start from middle of the year
    t := time.Date(year, 7, 1, 0, 0, 0, 0, time.UTC)

    // Align to Monday
    if t.Weekday() == time.Sunday {
        t = t.AddDate(0, 0, -6)
    } else {
        t = t.AddDate(0, 0, -int(t.Weekday())+1)
    }

    // Adjust for week difference
    y, 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
로그인 후 복사

주의 마지막 날 검색

주의 첫 번째 날과 마지막 날이 모두 필요한 경우 함수를 확장하여 반환할 수 있습니다. 종료 날짜:

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)) // Output: 2018-01-01 00:00:00 +0000 UTC 2018-01-07 00:00:00 +0000 UTC
fmt.Println(WeekRange(2018, 2)) // Output: 2018-01-08 00:00:00 +0000 UTC 2018-01-14 00:00:00 +0000 UTC
로그인 후 복사

이 사용자 정의 구현을 사용하면 주어진 주 번호에 해당하는 날짜 범위를 쉽게 검색할 수 있으므로 Golang 애플리케이션에서 달력 조작 및 데이터 분석을 위한 귀중한 도구가 됩니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿