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)
}