package goutil import ( "fmt" "time" ) func FormatTime(ts int64) string { if ts < 1e10 { // 秒级(10位) return time.Unix(ts, 0).Format("2006-01-02 15:04:05") } else if ts < 1e13 { // 毫秒级(13位) return time.UnixMilli(ts).Format("2006-01-02 15:04:05") } else if ts < 1e16 { // 微秒级(16位) return time.UnixMicro(ts).Format("2006-01-02 15:04:05") } else { // 纳秒级(19位) return time.Unix(0, ts).Format("2006-01-02 15:04:05") } return "" } // 时间戳转为日期 func TimeToDate(ts int64) string { if ts < 1e10 { // 秒级(10位) return time.Unix(ts, 0).Format("2006-01-02") } else if ts < 1e13 { // 毫秒级(13位) return time.UnixMilli(ts).Format("2006-01-02") } return "" } // 时间戳转为datetime格式 func TimeToDateTime(ts int64) string { return FormatTime(ts) } // 日期转为时间戳 func DateTimeToTime(date string) int64 { var LOC, _ = time.LoadLocation("Asia/Shanghai") tim, _ := time.ParseInLocation("2006-01-02 15:04:05", date, LOC) return tim.Unix() } func GetNowTime() string { return time.Now().Format("2006-01-02 15:04:05") } // 获取一天开始的时间戳 func GetTodayStartTime() int64 { now := time.Now().Unix() return now - (now+28800)%86400 } // 获取一周开始的时间戳 func GetWeekStartTime() int64 { now := time.Now() week := int(now.Weekday()) if week == 0 { week = 7 } t := now.AddDate(0, 0, 1-week).Unix() return t - (t+28800)%86400 } // 获取一月开始的时间戳 func GetMonthStartTime() int64 { now := time.Now().AddDate(0, 0, 1-time.Now().Day()).Unix() return now - (now+28800)%86400 } func TimeToWeek(t int64) string { week := time.Unix(t, 0) switch week.Weekday() { case time.Monday: return "星期一" case time.Tuesday: return "星期二" case time.Wednesday: return "星期三" case time.Thursday: return "星期四" case time.Friday: return "星期五" case time.Saturday: return "星期六" case time.Sunday: return "星期天" } return "" } // 时间戳转时间提示 func TimeToTips(t int64) string { now := time.Now().Unix() span := now - t result := "" if span > 0 { if span < 60 { result = "刚刚" } else if span <= 1800 { result = fmt.Sprintf("%d分钟前", span/60) } else if span <= 3600 { result = "半小时前" } else if span <= 86400 { result = fmt.Sprintf("%d小时前", span/3600) } else if span <= 86400*30 { result = fmt.Sprintf("%d天前", span/(86400)) } else if span <= 86400*30*12 { result = fmt.Sprintf("%d月前", span/(86400*30)) } else { result = fmt.Sprintf("%d年前", span/(86400*30*12)) } } else { span = 0 - span if span < 60 { result = fmt.Sprintf("%d秒后", span) } else if span <= 1800 { result = fmt.Sprintf("%d分钟后", span/60) } else if span <= 3600 { result = "半小时后" } else if span <= 86400 { result = fmt.Sprintf("%d小时后", span/3600) } else if span <= 86400*30 { result = fmt.Sprintf("%d天后", span/(86400)) } else if span <= 86400*30*12 { result = fmt.Sprintf("%d月后", span/(86400*30)) } else { result = fmt.Sprintf("%d年后", span/(86400*30*12)) } } return result }