方法比较简单,比较常用的是以下几个方法:

  1. Timestamp用于获得当前时间戳,TimestampMilliTimestampMicroTimestampNano用于获得当前的毫秒、微秒和纳秒值。
  2. DateDatetime用于获得当前日期及当前日期时间。
  3. SetTimeZone用于设置当前进程的全局时区。
  4. 其他方法说明请查看接口文档。

执行后,输出结果为:

  1. Date : 2018-07-22
  2. Datetime : 2018-07-22 11:52:22
  3. Second : 1532231542
  4. Millisecond: 1532231542688
  5. Microsecond: 1532231542688688
  6. Nanosecond : 1532231542688690259

时区的全局设置必须要在标准库的timeimport之前调用。

  1. 2018-11-21 22:50:56.723429 +0800 CST m=+0.000649366
  2. 2018-11-21 23:50:56
  3. 2018-11-21 23:50:56.723832 +0900 JST m=+0.001052780

除了通过New方法外,也可以通过StrToTime根据常见的时间字符串解析生成gtime.Time对象,常见的时间字符串如下:

使用示例:

  1. import (
  2. "fmt"
  3. "github.com/gogf/gf/v2/os/gtime"
  4. "time"
  5. )
  6. func main() {
  7. array := []string{
  8. "2017-12-14 04:51:34 +0805 LMT",
  9. "2006-01-02T15:04:05Z07:00",
  10. "2014-01-17T01:19:15+08:00",
  11. "2018-02-09T20:46:17.897Z",
  12. "2018-02-09 20:46:17.897",
  13. "2018-02-09T20:46:17Z",
  14. "2018-02-09 20:46:17",
  15. "2018.02.09 20:46:17",
  16. "2018-02-09",
  17. "2017/12/14 04:51:34 +0805 LMT",
  18. "2018/02/09 12:00:15",
  19. "01/Nov/2018:13:28:13 +0800",
  20. "01-Nov-2018T01:19:15+08:00",
  21. "01-Nov-2018 11:50:28 +0805 LMT",
  22. "01/Nov/2018 11:50:28",
  23. "01/Nov/2018:11:50:28",
  24. "01.Nov.2018:11:50:28",
  25. "01/Nov/2018",
  26. }
  27. cstLocal, _ := time.LoadLocation("Asia/Shanghai")
  28. for _, s := range array {
  29. if t, err := gtime.StrToTime(s); err == nil {
  30. fmt.Println(s)
  31. fmt.Println(t.UTC().String())
  32. fmt.Println(t.In(cstLocal).String())
  33. } else {
  34. glog.Error(s, err)
  35. }
  36. fmt.Println()
  37. }
  38. }