From f4427b9fbca4ddb7598e7b8f7cf3a1d39dd224b0 Mon Sep 17 00:00:00 2001 From: CyJaySong <29367599+cyjaysong@users.noreply.github.com> Date: Mon, 31 Mar 2025 10:18:50 +0800 Subject: [PATCH] =?UTF-8?q?BeginOfWeek,EndOfWeek=20=E7=9A=84beginFrom?= =?UTF-8?q?=E5=92=8CendWith=E6=94=B9=E4=B8=BA=E5=BF=85=E4=BC=A0=20(#300)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- datetime/datetime.go | 16 ++++------------ datetime/datetime_example_test.go | 8 ++++---- datetime/datetime_test.go | 8 ++++---- docs/api/packages/datetime.md | 14 +++++++------- 4 files changed, 19 insertions(+), 27 deletions(-) diff --git a/datetime/datetime.go b/datetime/datetime.go index 3ea3a0c..b2b303f 100644 --- a/datetime/datetime.go +++ b/datetime/datetime.go @@ -281,12 +281,8 @@ func EndOfDay(t time.Time) time.Time { // BeginOfWeek return beginning week, default week begin from Sunday. // Play: https://go.dev/play/p/ynjoJPz7VNV -func BeginOfWeek(t time.Time, beginFrom ...time.Weekday) time.Time { - var beginFromWeekday = time.Sunday - if len(beginFrom) > 0 { - beginFromWeekday = beginFrom[0] - } - y, m, d := t.AddDate(0, 0, int(beginFromWeekday-t.Weekday())).Date() +func BeginOfWeek(t time.Time, beginFrom time.Weekday) time.Time { + y, m, d := t.AddDate(0, 0, int(beginFrom-t.Weekday())).Date() beginOfWeek := time.Date(y, m, d, 0, 0, 0, 0, t.Location()) if beginOfWeek.After(t) { return beginOfWeek.AddDate(0, 0, -7) @@ -296,12 +292,8 @@ func BeginOfWeek(t time.Time, beginFrom ...time.Weekday) time.Time { // EndOfWeek return end week time, default week end with Saturday. // Play: https://go.dev/play/p/i08qKXD9flf -func EndOfWeek(t time.Time, endWith ...time.Weekday) time.Time { - var endWithWeekday = time.Saturday - if len(endWith) > 0 { - endWithWeekday = endWith[0] - } - y, m, d := t.AddDate(0, 0, int(endWithWeekday-t.Weekday())).Date() +func EndOfWeek(t time.Time, endWith time.Weekday) time.Time { + y, m, d := t.AddDate(0, 0, int(endWith-t.Weekday())).Date() var endWithWeek = time.Date(y, m, d, 23, 59, 59, int(time.Second-time.Nanosecond), t.Location()) if endWithWeek.Before(t) { endWithWeek = endWithWeek.AddDate(0, 0, 7) diff --git a/datetime/datetime_example_test.go b/datetime/datetime_example_test.go index d3deee1..f846f97 100644 --- a/datetime/datetime_example_test.go +++ b/datetime/datetime_example_test.go @@ -299,23 +299,23 @@ func ExampleEndOfDay() { func ExampleBeginOfWeek() { input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC) - result := BeginOfWeek(input) + result := BeginOfWeek(input, time.Monday) fmt.Println(result) // Output: - // 2023-01-08 00:00:00 +0000 UTC + // 2023-01-02 00:00:00 +0000 UTC } func ExampleEndOfWeek() { input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC) - result := EndOfWeek(input) + result := EndOfWeek(input, time.Sunday) fmt.Println(result) // Output: - // 2023-01-14 23:59:59.999999999 +0000 UTC + // 2023-01-08 23:59:59.999999999 +0000 UTC } func ExampleBeginOfMonth() { diff --git a/datetime/datetime_test.go b/datetime/datetime_test.go index 54e933b..ed547a9 100644 --- a/datetime/datetime_test.go +++ b/datetime/datetime_test.go @@ -611,9 +611,9 @@ func TestBeginOfWeek(t *testing.T) { assert := internal.NewAssert(t, "TestBeginOfWeek") - expected := time.Date(2022, 2, 13, 0, 0, 0, 0, time.Local) + expected := time.Date(2022, 2, 14, 0, 0, 0, 0, time.Local) td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) - actual := BeginOfWeek(td) + actual := BeginOfWeek(td, time.Monday) assert.Equal(expected, actual) } @@ -623,9 +623,9 @@ func TestEndOfWeek(t *testing.T) { assert := internal.NewAssert(t, "TestEndOfWeek") - expected := time.Date(2022, 2, 19, 23, 59, 59, 999999999, time.Local) + expected := time.Date(2022, 2, 20, 23, 59, 59, 999999999, time.Local) td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) - actual := EndOfWeek(td) + actual := EndOfWeek(td, time.Sunday) assert.Equal(expected, actual) } diff --git a/docs/api/packages/datetime.md b/docs/api/packages/datetime.md index cce2a43..0010ae6 100644 --- a/docs/api/packages/datetime.md +++ b/docs/api/packages/datetime.md @@ -546,7 +546,7 @@ func main() { 函数签名: ```go -func BeginOfWeek(t time.Time, beginFrom ...time.Weekday) time.Time +func BeginOfWeek(t time.Time, beginFrom time.Weekday) time.Time ``` 示例:[运行](https://go.dev/play/p/ynjoJPz7VNV) @@ -562,12 +562,12 @@ import ( func main() { input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC) - result := datetime.BeginOfWeek(input) + result := datetime.BeginOfWeek(input, time.Monday) fmt.Println(result) // Output: - // 2023-01-08 00:00:00 +0000 UTC + // 2023-01-09 00:00:00 +0000 UTC } ``` @@ -727,7 +727,7 @@ func main() { fmt.Println(result) // Output: - // 2023-01-08 23:59:59.999999999 +0000 UTC + // 2023-01-02 00:00:00 +0000 UTC } ``` @@ -738,7 +738,7 @@ func main() { 函数签名: ```go -func EndOfWeek(t time.Time, endWith ...time.Weekday) time.Time +func EndOfWeek(t time.Time, endWith time.Weekday) time.Time ``` 示例:[运行](https://go.dev/play/p/i08qKXD9flf) @@ -754,12 +754,12 @@ import ( func main() { input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC) - result := datetime.EndOfWeek(input) + result := datetime.EndOfWeek(input, time.Sunday) fmt.Println(result) // Output: - // 2023-01-14 23:59:59.999999999 +0000 UTC + // 2023-01-08 23:59:59.999999999 +0000 UTC } ```