You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.3 KiB
106 lines
2.3 KiB
|
1 year ago
|
package util
|
||
|
|
|
||
|
|
import "time"
|
||
|
|
|
||
|
|
func IsSameDay(t1 time.Time, t2 time.Time) bool {
|
||
|
|
return t1.Year() == t2.Year() && t1.Month() == t2.Month() && t1.Day() == t2.Day()
|
||
|
|
}
|
||
|
|
|
||
|
|
func IsSameDayTimeStamp(tm1 int64, tm2 int64) bool {
|
||
|
|
t1 := time.Unix(tm1, 0)
|
||
|
|
t2 := time.Unix(tm2, 0)
|
||
|
|
|
||
|
|
return t1.Year() == t2.Year() && t1.Month() == t2.Month() && t1.Day() == t2.Day()
|
||
|
|
}
|
||
|
|
|
||
|
|
// GetFirstDateOfMonth 获取本月第一天零点
|
||
|
|
func GetFirstDateOfMonth(d time.Time) time.Time {
|
||
|
|
d = d.AddDate(0, 0, -d.Day()+1)
|
||
|
|
return GetZeroTime(d)
|
||
|
|
}
|
||
|
|
|
||
|
|
// GetLastDateOfMonth 获取本月最后一天零点
|
||
|
|
func GetLastDateOfMonth(d time.Time) time.Time {
|
||
|
|
return GetFirstDateOfMonth(d).AddDate(0, 1, -1)
|
||
|
|
}
|
||
|
|
|
||
|
|
// GetWeekZeroTime 获取本周第一天的0点时间
|
||
|
|
func GetWeekZeroTime(d time.Time) time.Time {
|
||
|
|
wd := int(d.Weekday())
|
||
|
|
if wd == 0 {
|
||
|
|
wd = 7
|
||
|
|
}
|
||
|
|
todayZero := GetZeroTime(d)
|
||
|
|
return todayZero.AddDate(0, 0, 1-wd)
|
||
|
|
}
|
||
|
|
|
||
|
|
// GetZeroTime 获取某一天的0点时间
|
||
|
|
func GetZeroTime(d time.Time) time.Time {
|
||
|
|
return time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location())
|
||
|
|
}
|
||
|
|
|
||
|
|
func IsSameWeek(a, b int64) bool {
|
||
|
|
// 首先判断是否相差7天内
|
||
|
|
dif := a - b
|
||
|
|
if dif < 0 {
|
||
|
|
dif = -dif
|
||
|
|
}
|
||
|
|
if dif > 7*24*6060 {
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
ta := time.Unix(a, 0)
|
||
|
|
tb := time.Unix(b, 0)
|
||
|
|
taw := ta.Weekday()
|
||
|
|
tbw := tb.Weekday()
|
||
|
|
// if taw == time.Sunday {
|
||
|
|
// taw = 7
|
||
|
|
// }
|
||
|
|
// if tbw == time.Sunday {
|
||
|
|
// tbw = 7
|
||
|
|
// }
|
||
|
|
if ta.After(tb) {
|
||
|
|
return taw >= tbw
|
||
|
|
}
|
||
|
|
return tbw >= taw
|
||
|
|
}
|
||
|
|
|
||
|
|
func IsSameMonth(a, b int64) bool {
|
||
|
|
ta := time.Unix(a, 0)
|
||
|
|
tb := time.Unix(b, 0)
|
||
|
|
return GetFirstDateOfMonth(ta) == GetFirstDateOfMonth(tb)
|
||
|
|
}
|
||
|
|
|
||
|
|
func GetMonthDay(t time.Time) int {
|
||
|
|
y, m, _ := t.Date()
|
||
|
|
if m == 2 {
|
||
|
|
if ((y%4) == 0 && (y%100) != 0) || (y%400) == 0 {
|
||
|
|
return 29
|
||
|
|
} else {
|
||
|
|
return 28
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if m == 4 || m == 6 || m == 9 || m == 11 {
|
||
|
|
return 30
|
||
|
|
}
|
||
|
|
return 31
|
||
|
|
}
|
||
|
|
|
||
|
|
// 获取本周的开始时间和结束时间
|
||
|
|
func GetStartAndEndOfWeek(day int) (string, string) {
|
||
|
|
// 获取当前时间
|
||
|
|
t := time.Now()
|
||
|
|
weekday := t.Weekday()
|
||
|
|
startOfWeek := t.AddDate(0, 0, -int(weekday)+1-day)
|
||
|
|
endOfWeek := startOfWeek.AddDate(0, 0, 6)
|
||
|
|
return startOfWeek.Format("2006-01-02"), endOfWeek.Format("2006-01-02")
|
||
|
|
}
|
||
|
|
|
||
|
|
// 根据星期数判断今天是否是单数天
|
||
|
|
func IsSingleDay() bool {
|
||
|
|
day := time.Now().Weekday()
|
||
|
|
if day == time.Sunday {
|
||
|
|
day = 7
|
||
|
|
}
|
||
|
|
return day%2 == 1
|
||
|
|
}
|