mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-13 01:02:28 +08:00
feat: add funcs for get begin and end time for year, month, week, day, hour, minute
This commit is contained in:
@@ -110,3 +110,73 @@ func FormatStrToTime(str, format string) (time.Time, error) {
|
|||||||
|
|
||||||
return time.Parse(v, str)
|
return time.Parse(v, str)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BeginOfMinute return beginning minute time of day
|
||||||
|
func BeginOfMinute(t time.Time) time.Time {
|
||||||
|
y, m, d := t.Date()
|
||||||
|
return time.Date(y, m, d, t.Hour(), t.Minute(), 0, 0, t.Location())
|
||||||
|
}
|
||||||
|
|
||||||
|
// EndOfMinute return end minute time of day
|
||||||
|
func EndOfMinute(t time.Time) time.Time {
|
||||||
|
y, m, d := t.Date()
|
||||||
|
return time.Date(y, m, d, t.Hour(), t.Minute(), 59, int(time.Second-time.Nanosecond), t.Location())
|
||||||
|
}
|
||||||
|
|
||||||
|
// BeginOfHour return beginning hour time of day
|
||||||
|
func BeginOfHour(t time.Time) time.Time {
|
||||||
|
y, m, d := t.Date()
|
||||||
|
return time.Date(y, m, d, t.Hour(), 0, 0, 0, t.Location())
|
||||||
|
}
|
||||||
|
|
||||||
|
// EndOfHour return end hour time of day
|
||||||
|
func EndOfHour(t time.Time) time.Time {
|
||||||
|
y, m, d := t.Date()
|
||||||
|
return time.Date(y, m, d, t.Hour(), 59, 59, int(time.Second-time.Nanosecond), t.Location())
|
||||||
|
}
|
||||||
|
|
||||||
|
// BeginOfDay return beginning hour time of day
|
||||||
|
func BeginOfDay(t time.Time) time.Time {
|
||||||
|
y, m, d := t.Date()
|
||||||
|
return time.Date(y, m, d, 0, 0, 0, 0, t.Location())
|
||||||
|
}
|
||||||
|
|
||||||
|
// EndOfDay return end time of day
|
||||||
|
func EndOfDay(t time.Time) time.Time {
|
||||||
|
y, m, d := t.Date()
|
||||||
|
return time.Date(y, m, d, 23, 59, 59, int(time.Second-time.Nanosecond), t.Location())
|
||||||
|
}
|
||||||
|
|
||||||
|
// BeginOfWeek return beginning week, week begin from Sunday
|
||||||
|
func BeginOfWeek(t time.Time) time.Time {
|
||||||
|
y, m, d := t.AddDate(0, 0, 0-int(BeginOfDay(t).Weekday())).Date()
|
||||||
|
return time.Date(y, m, d, 0, 0, 0, 0, t.Location())
|
||||||
|
}
|
||||||
|
|
||||||
|
// EndOfWeek return end week time, week end with Saturday
|
||||||
|
func EndOfWeek(t time.Time) time.Time {
|
||||||
|
y, m, d := BeginOfWeek(t).AddDate(0, 0, 7).Add(-time.Nanosecond).Date()
|
||||||
|
return time.Date(y, m, d, 23, 59, 59, int(time.Second-time.Nanosecond), t.Location())
|
||||||
|
}
|
||||||
|
|
||||||
|
// BeginOfMonth return beginning of month
|
||||||
|
func BeginOfMonth(t time.Time) time.Time {
|
||||||
|
y, m, _ := t.Date()
|
||||||
|
return time.Date(y, m, 1, 0, 0, 0, 0, t.Location())
|
||||||
|
}
|
||||||
|
|
||||||
|
// EndOfMonth return end of month
|
||||||
|
func EndOfMonth(t time.Time) time.Time {
|
||||||
|
return BeginOfMonth(t).AddDate(0, 1, 0).Add(-time.Nanosecond)
|
||||||
|
}
|
||||||
|
|
||||||
|
// BeginOfYear return beginning of year
|
||||||
|
func BeginOfYear(t time.Time) time.Time {
|
||||||
|
y, _, _ := t.Date()
|
||||||
|
return time.Date(y, time.January, 1, 0, 0, 0, 0, t.Location())
|
||||||
|
}
|
||||||
|
|
||||||
|
// EndOfYear return end of year
|
||||||
|
func EndOfYear(t time.Time) time.Time {
|
||||||
|
return BeginOfYear(t).AddDate(1, 0, 0).Add(-time.Nanosecond)
|
||||||
|
}
|
||||||
|
|||||||
@@ -64,16 +64,6 @@ func TestGetNowDateTime(t *testing.T) {
|
|||||||
assert.Equal(expected, GetNowDateTime())
|
assert.Equal(expected, GetNowDateTime())
|
||||||
}
|
}
|
||||||
|
|
||||||
//todo
|
|
||||||
//func TestGetZeroHourTimestamp(t *testing.T) {
|
|
||||||
// ts := GetZeroHourTimestamp()
|
|
||||||
// expected := time.Now().UTC().Unix() - 8*3600
|
|
||||||
// if ts != expected {
|
|
||||||
// utils.LogFailedTestInfo(t, "GetZeroHourTimestamp", "", expected, ts)
|
|
||||||
// t.FailNow()
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
func TestFormatTimeToStr(t *testing.T) {
|
func TestFormatTimeToStr(t *testing.T) {
|
||||||
assert := internal.NewAssert(t, "TestFormatTimeToStr")
|
assert := internal.NewAssert(t, "TestFormatTimeToStr")
|
||||||
|
|
||||||
@@ -121,3 +111,123 @@ func TestFormatStrToTime(t *testing.T) {
|
|||||||
assert.Equal(expected, actual)
|
assert.Equal(expected, actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBeginOfMinute(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestBeginOfMinute")
|
||||||
|
|
||||||
|
expected := time.Date(2022, 2, 15, 15, 48, 0, 0, time.Local)
|
||||||
|
td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local)
|
||||||
|
actual := BeginOfMinute(td)
|
||||||
|
|
||||||
|
assert.Equal(expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEndOfMinute(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestEndOfMinute")
|
||||||
|
|
||||||
|
expected := time.Date(2022, 2, 15, 15, 48, 59, 999999999, time.Local)
|
||||||
|
td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local)
|
||||||
|
actual := EndOfMinute(td)
|
||||||
|
|
||||||
|
assert.Equal(expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBeginOfHour(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestBeginOfHour")
|
||||||
|
|
||||||
|
expected := time.Date(2022, 2, 15, 15, 0, 0, 0, time.Local)
|
||||||
|
td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local)
|
||||||
|
actual := BeginOfHour(td)
|
||||||
|
|
||||||
|
assert.Equal(expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEndOfHour(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestEndOfHour")
|
||||||
|
|
||||||
|
expected := time.Date(2022, 2, 15, 15, 59, 59, 999999999, time.Local)
|
||||||
|
td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local)
|
||||||
|
actual := EndOfHour(td)
|
||||||
|
|
||||||
|
assert.Equal(expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBeginOfDay(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestBeginOfDay")
|
||||||
|
|
||||||
|
expected := time.Date(2022, 2, 15, 0, 0, 0, 0, time.Local)
|
||||||
|
td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local)
|
||||||
|
actual := BeginOfDay(td)
|
||||||
|
|
||||||
|
assert.Equal(expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEndOfDay(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestEndOfDay")
|
||||||
|
|
||||||
|
expected := time.Date(2022, 2, 15, 23, 59, 59, 999999999, time.Local)
|
||||||
|
td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local)
|
||||||
|
actual := EndOfDay(td)
|
||||||
|
|
||||||
|
assert.Equal(expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBeginOfWeek(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestBeginOfWeek")
|
||||||
|
|
||||||
|
expected := time.Date(2022, 2, 13, 0, 0, 0, 0, time.Local)
|
||||||
|
td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local)
|
||||||
|
actual := BeginOfWeek(td)
|
||||||
|
|
||||||
|
assert.Equal(expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEndOfWeek(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestEndOfWeek")
|
||||||
|
|
||||||
|
expected := time.Date(2022, 2, 19, 23, 59, 59, 999999999, time.Local)
|
||||||
|
td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local)
|
||||||
|
actual := EndOfWeek(td)
|
||||||
|
|
||||||
|
assert.Equal(expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBeginOfMonth(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestBeginOfMonth")
|
||||||
|
|
||||||
|
expected := time.Date(2022, 2, 1, 0, 0, 0, 0, time.Local)
|
||||||
|
td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local)
|
||||||
|
actual := BeginOfMonth(td)
|
||||||
|
|
||||||
|
assert.Equal(expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEndOfMonth(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestEndOfMonth")
|
||||||
|
|
||||||
|
expected := time.Date(2022, 2, 28, 23, 59, 59, 999999999, time.Local)
|
||||||
|
td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local)
|
||||||
|
actual := EndOfMonth(td)
|
||||||
|
|
||||||
|
assert.Equal(expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBeginOfYear(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestBeginOfYear")
|
||||||
|
|
||||||
|
expected := time.Date(2022, 1, 1, 0, 0, 0, 0, time.Local)
|
||||||
|
td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local)
|
||||||
|
actual := BeginOfYear(td)
|
||||||
|
|
||||||
|
assert.Equal(expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEndOfYear(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestEndOfYear")
|
||||||
|
|
||||||
|
expected := time.Date(2022, 12, 31, 23, 59, 59, 999999999, time.Local)
|
||||||
|
td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local)
|
||||||
|
actual := EndOfYear(td)
|
||||||
|
|
||||||
|
assert.Equal(expected, actual)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user