package timehelper import "time" //GetDateUnixDate 返回带毫秒的时间戳,如果需要转化为时间类型time, //不带毫秒的:time.Unix(1663315884651/1000,0), //带毫秒的time.Unix(1663315884651/1000, 1000000*(1663315884651%1000)) func GetDateUnixDate(date time.Time) int64 { return date.UnixMilli() //Unix() //* 1000 } //GetUnixDate 时间撮转化为time类型 func GetUnixDate(date int64) time.Time { return time.Unix(date/1000, 1000000*(date%1000)) } func ConvertTimeLocalSec(date int64) time.Time { d1 := time.Unix(date/1000, 1000000*(date%1000)) d2 := time.Date(d1.Year(), d1.Month(), d1.Day(), d1.Hour(), d1.Minute(), d1.Second(), d1.Nanosecond(), time.Local) return d2 } //TimeSubDays 时间间隔天数 func TimeSubDays(t1, t2 time.Time) int { if t1.Location().String() != t2.Location().String() { return -1 } hours := t1.Sub(t2).Hours() if hours <= 0 { return -1 } // sub hours less than 24 if hours < 24 { // may same day t1y, t1m, t1d := t1.Date() t2y, t2m, t2d := t2.Date() isSameDay := t1y == t2y && t1m == t2m && t1d == t2d if isSameDay { return 0 } return 1 } // equal or more than 24 if (hours/24)-float64(int(hours/24)) == 0 { // just 24's times return int(hours / 24) } // more than 24 hours return int(hours/24) + 1 } //ConvertTimeLocal 时间在数据库返回给结构体的时候,结构体的时间时区是非本地的,需要转化为本地的再转变为时间戳 func ConvertTimeLocal(d1 time.Time) time.Time { d2 := time.Date(d1.Year(), d1.Month(), d1.Day(), d1.Hour(), d1.Minute(), d1.Second(), 0, time.Local) return d2 } //ConvertTimeDayLocal s func ConvertTimeDayLocal(d1 time.Time) time.Time { d2 := time.Date(d1.Year(), d1.Month(), d1.Day(), 0, 0, 0, 0, time.Local) return d2 } //转为时分秒 func ToTimeHour(ltime int64) string { now := IntToTime(ltime) return now.Format("15:04:05") } // func ParseInLocation(layout, value string, loc *Location) (Time, error) (layout已带时区时可直接用Parse) //time.ParseInLocation("2006-01-02 15:04:05", "2017-05-11 14:06:06", time.Local) //转为时间类型 func IntToTime(intime int64) time.Time { return time.Unix(intime/1000, 0) } //GetPastDay 当前时间算起,过去num天内的开始日期、结束日期 func GetPastDay(num int) (start, end time.Time) { tn := time.Now() //当前时间,天数为单位 nowday := time.Date(tn.Year(), tn.Month(), tn.Day(), 0, 0, 0, 0, time.Local) //过去30天 oldTime := nowday.AddDate(0, 0, -num) return oldTime, nowday } //ConvertTimeToString 格式时间,返回前台,yyyy-mm-dd hh:mm:ss func ConvertTimeToString(t time.Time) string { return t.Format("2006-01-02 15:04:05") } //ConvertStringToTime 格式时间,返回前台,yyyy-mm-dd hh:mm:ss func ConvertStringToTime(t string) time.Time { t2, _ := time.Parse("2006-01-02 15:04:05", t) return t2 } //ConvertTimeToStringMin 格式时间,返回前台,yyyy-mm-dd hh:mm:ss func ConvertTimeToStringMin(t time.Time) string { return t.Format("2006-01-02 15:04") } //ConvertTimeToStringDay 格式时间,返回前台,yyyy-mm-dd func ConvertTimeToStringDay(t time.Time) string { return t.Format("2006-01-02") } //ConvertTimeToString2 格式时间,返回前台,yyyy.mm.dd hh:mm 2020.06.02 17:50 func ConvertTimeToString2(t time.Time) string { return t.Format("2006.01.02 15:04") } //ConvertTimeToStringYear 格式时间,返回前台,mm-dd yyyy func ConvertTimeToStringYear(s time.Time) string { return s.Format("01-02 2006") }