Go语言编写规范之time包

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
}
posted @ 2020-10-28 12:09  LeeJuly  阅读(117)  评论(0编辑  收藏  举报