go:处理时间
- 2019 年 11 月 22 日
- 筆記
go中处理时间坑也挺多滴 时间转字符串
func TimeToStrLong(t time.Time) string { return t.Format("2006-01-02 15:04:05") } func TimeToStrShort(t time.Time) string { return t.Format("2006-01-02") }
字符串转时间(注意时区)
// 谨慎使用time.Parse,它会直接转成utc时间 // ParseTime 字符串转时间, zone 为时区 东8=8;西5=-5 func ParseTime(strTime string, zone int) time.Time { var tzone = time.FixedZone("zone", zone*3600) t, _ := time.ParseInLocation("2006-01-02 15:04:05", strTime, tzone) return t }
当前本地时间
// 这里返回的是本地时间 tstr := time.Now().Format("2006-01-02 15:04:05") fmt.Println(tstr)
当前时间(带时区)
// 当前求美国东部时间(不考虑夏令时) var estZone = time.FixedZone("EST", -5*3600) tstr = time.Now().In(estZone).Format("2006-01-02 15:04:05") fmt.Println(tstr)
时间戳
// TimeToTimestamp time 转为 10位timestamp func TimeToTimestamp(t time.Time) int64 { ret := t.UnixNano() / 1000000000 return ret } // TimestampToTime 十位 timestamp 转换为time func TimestampToTime(timestamp int64) time.Time { tm := time.Unix(timestamp, 0) return tm }
时间转日期(消去时分秒)
func TimeToDate(t time.Time) time.Time { loc, _ := time.LoadLocation("Asia/Chongqing") return time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, loc) }