74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
package utils
|
|
|
|
import (
|
|
"math"
|
|
"time"
|
|
)
|
|
|
|
type Week int
|
|
|
|
const (
|
|
Monday Week = iota + 1
|
|
Tuesday
|
|
Wednesday
|
|
Thursday
|
|
Friday
|
|
Saturday
|
|
Sunday
|
|
)
|
|
|
|
func IsEmptyTime(t time.Time) bool {
|
|
return t.IsZero()
|
|
}
|
|
|
|
func FormatDate(t time.Time) string {
|
|
return t.Format("2006-01-02")
|
|
}
|
|
|
|
func FormatDatetime(t time.Time) string {
|
|
return t.Format("2006-01-02 15:04:05")
|
|
}
|
|
|
|
func FormatTimeForLayout(t time.Time, layout string) string {
|
|
return t.Format(layout)
|
|
}
|
|
|
|
func DateTimeToTime(t string) time.Time {
|
|
_time, _ := time.ParseInLocation("2006-01-02 15:04:05", t, time.Local)
|
|
return _time
|
|
}
|
|
|
|
func DataTimeToDate(t string) time.Time {
|
|
_time, _ := time.ParseInLocation("2006-01-02", t, time.Local)
|
|
return _time
|
|
}
|
|
|
|
func GetMondayTime(t time.Time) time.Time {
|
|
offset := int(time.Monday - t.Weekday())
|
|
|
|
if offset > 0 {
|
|
offset = -6
|
|
}
|
|
return time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset)
|
|
}
|
|
|
|
func MonthBeginAt(year, month int) time.Time {
|
|
return time.Date(year, time.Month(month), 1, 0, 0, 0, 0, time.Now().Location())
|
|
}
|
|
|
|
func MonthFinishAt(year, month int) time.Time {
|
|
mark := time.Date(year, time.Month(month), 1, 23, 59, 59, 0, time.Now().Location())
|
|
return mark.AddDate(0, 1, -1)
|
|
}
|
|
|
|
func DiffTimeMonth(time1, time2 time.Time) int {
|
|
year := math.Abs(float64(time1.Year()) - float64(time2.Year()))
|
|
month := math.Abs(float64(time1.Month()) - float64(time2.Month()))
|
|
return int(year)*12 + int(month) + 1
|
|
}
|
|
|
|
func DiffTimeDays(time1, time2 time.Time) int {
|
|
sub := time1.Sub(time2)
|
|
return int(math.Ceil(math.Abs(sub.Hours() / 24.0)))
|
|
}
|