方法比较简单,比较常用的是以下几个方法:
Timestamp
用于获得当前时间戳,TimestampMilli
、TimestampMicro
及TimestampNano
用于获得当前的毫秒、微秒和纳秒值。Date
和Datetime
用于获得当前日期及当前日期时间。SetTimeZone
用于设置当前进程的全局时区。- 其他方法说明请查看接口文档。
执行后,输出结果为:
Date : 2018-07-22
Datetime : 2018-07-22 11:52:22
Second : 1532231542
Millisecond: 1532231542688
Microsecond: 1532231542688688
Nanosecond : 1532231542688690259
时区的全局设置必须要在标准库的time
包import
之前调用。
2018-11-21 22:50:56.723429 +0800 CST m=+0.000649366
2018-11-21 23:50:56
2018-11-21 23:50:56.723832 +0900 JST m=+0.001052780
除了通过New
方法外,也可以通过StrToTime
根据常见的时间字符串解析生成gtime.Time
对象,常见的时间字符串如下:
使用示例:
import (
"fmt"
"github.com/gogf/gf/v2/os/gtime"
"time"
)
func main() {
array := []string{
"2017-12-14 04:51:34 +0805 LMT",
"2006-01-02T15:04:05Z07:00",
"2014-01-17T01:19:15+08:00",
"2018-02-09T20:46:17.897Z",
"2018-02-09 20:46:17.897",
"2018-02-09T20:46:17Z",
"2018-02-09 20:46:17",
"2018.02.09 20:46:17",
"2018-02-09",
"2017/12/14 04:51:34 +0805 LMT",
"2018/02/09 12:00:15",
"01/Nov/2018:13:28:13 +0800",
"01-Nov-2018T01:19:15+08:00",
"01-Nov-2018 11:50:28 +0805 LMT",
"01/Nov/2018 11:50:28",
"01/Nov/2018:11:50:28",
"01.Nov.2018:11:50:28",
"01/Nov/2018",
}
cstLocal, _ := time.LoadLocation("Asia/Shanghai")
for _, s := range array {
if t, err := gtime.StrToTime(s); err == nil {
fmt.Println(s)
fmt.Println(t.UTC().String())
fmt.Println(t.In(cstLocal).String())
} else {
glog.Error(s, err)
}
fmt.Println()
}
}