diff --git a/datetime/datetime.go b/datetime/datetime.go index 4a3c7b9..6e20178 100644 --- a/datetime/datetime.go +++ b/datetime/datetime.go @@ -72,6 +72,10 @@ func AddDay(t time.Time, day int64) time.Time { return t.Add(24 * time.Hour * time.Duration(day)) } +func AddYear(t time.Time, year int64) time.Time { + return t.Add(365 * 24 * time.Hour * time.Duration(year)) +} + // GetNowDate return format yyyy-mm-dd of current date. // Play: https://go.dev/play/p/PvfkPpcpBBf func GetNowDate() string { diff --git a/datetime/datetime_example_test.go b/datetime/datetime_example_test.go index 237ce8e..487a8f0 100644 --- a/datetime/datetime_example_test.go +++ b/datetime/datetime_example_test.go @@ -57,6 +57,23 @@ func ExampleAddMinute() { // -2m0s } +func ExampleAddYear() { + now := time.Now() + + after1Year := AddYear(now, 1) + diff1 := after1Year.Sub(now) + + before1Year := AddYear(now, -1) + diff2 := before1Year.Sub(now) + + fmt.Println(diff1) + fmt.Println(diff2) + + // Output: + // 8760h0m0s + // -8760h0m0s +} + func ExampleGetNowDate() { result := GetNowDate() diff --git a/datetime/datetime_test.go b/datetime/datetime_test.go index afa7022..504af46 100644 --- a/datetime/datetime_test.go +++ b/datetime/datetime_test.go @@ -7,6 +7,19 @@ import ( "github.com/duke-git/lancet/v2/internal" ) +func TestAddYear(t *testing.T) { + assert := internal.NewAssert(t, "TestAddDay") + + now := time.Now() + after2Years := AddYear(now, 1) + diff1 := after2Years.Sub(now) + assert.Equal(float64(8760), diff1.Hours()) + + before2Years := AddYear(now, -1) + diff2 := before2Years.Sub(now) + assert.Equal(float64(-8760), diff2.Hours()) +} + func TestAddDay(t *testing.T) { assert := internal.NewAssert(t, "TestAddDay")