/
time.go
48 lines (41 loc) · 1.26 KB
/
time.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
* Copyright © 2021 - 2024 vity <vityme@icloud.com>.
*
* Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file.
*/
package x
import (
"time"
)
// GetZeroTime 获取指定时间零点时刻
func GetZeroTime(t time.Time) time.Time {
return time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())
}
// GetLastTime 获取指定时间最后时刻 23:59:59
func GetLastTime(t time.Time) time.Time {
return time.Date(t.Year(), t.Month(), t.Day(), 23, 59, 59, 0, t.Location())
}
// GetWeekdayOfDay 获取指定日期本周周几的日期
func GetWeekdayOfDay(t time.Time, weekday time.Weekday) time.Time {
if t.Weekday() == weekday {
return GetZeroTime(t)
}
offset := int(weekday - t.Weekday())
if t.Weekday() == time.Sunday {
offset = 0 - (7 - offset)
}
day := GetZeroTime(t.AddDate(0, 0, offset))
if weekday == time.Sunday {
day = day.AddDate(0, 0, 7)
}
return day
}
// GetMonthFirstDay 获取指定日期的当月首日
func GetMonthFirstDay(t time.Time) time.Time {
return time.Date(t.Year(), t.Month(), 1, 0, 0, 0, 0, t.Location())
}
// GetMonthLastDay 获取指定日期的当月最后一日
func GetMonthLastDay(t time.Time) time.Time {
return GetZeroTime(GetMonthFirstDay(t).AddDate(0, 1, -1))
}