120 lines
3.4 KiB
Go
120 lines
3.4 KiB
Go
|
|
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")
|
|||
|
|
}
|