package xtime import ( "fmt" "strconv" "strings" "time" ) const DefaultTimeLayout = "2006-01-02 15:04:05" func LeaTime(t int64) string { leaSeconds := time.Now().Unix() - t mps := []struct { Seconds int64 Title string }{ {31536000, "years"}, {604800, "weeks"}, {86400, "days"}, {3600, "hours"}, {60, "min"}, {1, "sec"}, } res := []string{} for _, v := range mps { if leaSeconds > v.Seconds { if len(res) == 2 { break } n := leaSeconds / v.Seconds tt := v.Title if n == 1 { tt = strings.TrimRight(v.Title, "s") } res = append(res, fmt.Sprintf("%d %s", n, tt)) leaSeconds -= v.Seconds * n } } return strings.Join(res, " ") } func UnixToTime(unix int64) time.Time { return time.Unix(unix, 0) } func ParseTime(day string, layout string) int64 { if day == "" { return 0 } t, err := time.ParseInLocation(layout, day, time.Local) if err != nil { fmt.Println(err) return 0 } return t.Unix() } const DefaultLayout = "2006-01-02 15:04:05" func TimeTodayMinAndMax(ctime time.Time) (min, max time.Time) { start, _ := time.ParseInLocation(DefaultLayout, ctime.Format("2006-01-02")+" 00:00:00", time.Local) end, _ := time.ParseInLocation(DefaultLayout, ctime.Format("2006-01-02")+" 23:59:59", time.Local) return start, end } func UnixToStr(t int64) string { if t == 0 { return "" } return UnixToTime(t).Format(DefaultTimeLayout) } func GetToday(tim time.Time) int64 { today, _ := strconv.ParseInt(tim.Format("20060102"), 10, 64) return today } func Unix() int64 { return time.Now().Unix() } func UnixTime(unix int64) time.Time { return time.Unix(unix, 0) } func DayStartToTime(day int64) time.Time { start, _ := time.ParseInLocation("20060102 15:04:05", fmt.Sprintf("%d 00:00:00", day), time.Local) return start } func DayEndToTime(day int64) time.Time { start, _ := time.ParseInLocation("20060102 15:04:05", fmt.Sprintf("%d 23:59:59", day), time.Local) return start } func MinAndMax(ctime time.Time) (min, max time.Time) { start, _ := time.ParseInLocation(DefaultLayout, ctime.Format("2006-01-02")+" 00:00:00", time.Local) end, _ := time.ParseInLocation(DefaultLayout, ctime.Format("2006-01-02")+" 23:59:59", time.Local) return start, end } func GetMonday(tt time.Time) time.Time { return tt.AddDate(0, 0, -(int(tt.Weekday()) - 1)) } func GetSunDay(tt time.Time) time.Time { return tt.AddDate(0, 0, 7-(int(tt.Weekday()))) } func Rang(start time.Time, end time.Time, fun func(ctime time.Time)) { ctime := start for ctime.Before(end) { fun(ctime) ctime = ctime.AddDate(0, 0, 1) } } func EsTime(t time.Time) string { return t.Format(time.RFC3339) }