首頁 > 後端開發 > Golang > 如何在 Go 中根據週數取得日期範圍?

如何在 Go 中根據週數取得日期範圍?

Linda Hamilton
發布: 2024-12-07 05:55:19
原創
681 人瀏覽過

How to Get a Date Range Based on Week Number in Go?

Golang 中按週數排列的日期範圍

解決週數差異

時間。 Go 標準函式庫中的 ISOWeek() 函數傳回 ISO 週數,從星期一開始。但是,您似乎需要基於星期日開始日期的周數。

自訂實用程式

要解決此問題,讓我們利用自訂實用程式函數來取得所需的日期範圍:

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
}
登入後複製

週範圍

如果您需要指定週的開始日期和結束日期,可以使用以下函數:

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, 52))
登入後複製

輸出

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
登入後複製

輸出

輸出輸出輸出輸出注意:此方法透過將0 解釋為處理超出範圍的周上一年的最後一周,-1 為上一年倒數第二週,依此類推。

以上是如何在 Go 中根據週數取得日期範圍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板