はじめに
指定された週番号に対応する日付範囲を決定するには、次のようにします。多くのアプリケーションに共通の要件です。 Golang には週番号を取得する便利な関数が用意されていますが、対応する日付範囲を取得する組み込みメカニズムがありません。この記事では、この問題に対処する実用的な Golang ソリューションを紹介します。
カスタム関数の実装
特定の週の日付範囲を確立するには、次の手順を実行する必要があります。 :
これらの原則に基づいて、次のように 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 中国語 Web サイトの他の関連記事を参照してください。