1.time.Time和time.Duration
time.Time可以理解为时间单位,其中包含了一些对时间的处理方法,time.Now()返回就是time.Time类型
在处理时间的瞬时时使用time.Time,在比较、添加或减去时间时使用time.Time中的方法。
Bad | Good |
func isActive(now, start, stop int) bool { return start <= now && now < stop } |
func isActive(now, start, stop time.Time) bool { return (start.Before(now) || start.Equal(now)) && now.Before(stop) } |
time.Duration表示时间段,处理时间段时可以用这个方法
Bad | Good |
func poll(delay int) { for { // ... time.Sleep(time.Duration(delay) * time.Millisecond) } } poll(10) // 是几秒钟还是几毫秒? |
func poll(delay time.Duration) { for { // ... time.Sleep(delay) } } poll(10*time.Second) |
2.获取某些特定时间点的时间
获取将来或者过去某个时间段的时间
tomorrow := time.Now().AddDate(0 /* years */, 0, /* months */, 1 /* days */) yesterday := time.Now().Add(-24 * time.Hour)
获取0点时间
timeStr := time.Now().Format("2006-01-02") t, _ := time.ParseInLocation("2006-01-02", timeStr, time.Local)
3.时间的格式化
timeStr := time.Now().Format("2006-01-02") timeStr := time.Now().Format("2006-01-02 15:04:05")
4.时区选择
func get_date_today_china() (date string, err error) { var cstZone = time.FixedZone("CST", 60*60*8)//东八区 date = time.Now().In(cstZone).Format("2006-01-02") return }