本章简单了解下 Go 语言中 time
包的使用
创建
引入包
1 | import ( |
创建当前本地时间
1 | fmt.Println(time.Now()) // 本地时间 2018-08-24 15:06:49.77478074 +0800 CST m=+0.000545907 |
创建 Unix 本地时间
- 语法
1 | // sec 在 Unix 时间上增加的秒数 |
- 使用
1 | fmt.Println(time.Unix(0, 0)) // 1970-01-01 08:00:00 +0800 CST |
创建指定时间
- 语法
1 | func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time |
- 使用
1 | // 创建 UTC 时间 2018-08-24 12:00:00 +0000 UTC |
时间属性
1 | now := time.Now() |
格式化
format to string
1 | timeFormat := time.Now().Format("2006-01-02 15:04:05 -0700") |
这里值得说一下,Go 在时间格式化上真是别(yi)树(duo)一(qi)帜(pa),这颠覆了我以往认知的 YYYY-mm-dd HH:MM:ss
格式化模板,原因好像是 Go 是 Google 内部 2006 年立项的,全部数字可以按照 1234567
的顺序来记忆,不要告诉我你找不到这几个数字。
更多的格式化符号详见源码
string to date
1 | formatTime , _ := time.Parse("2006-01-02 15:04:05 -0700", "2018-08-24 16:27:16 +0800") |
时间差
获取时间差
1 | now := time.Now() |
时间差属性
获取的属性值都是按 100 位换算的
1 | fmt.Println(dur.Hours()) // 时间差小时数 10.997293793788334 |
创建时间差
可使用的标示位 "ns", "us" (or "µs"), "ms", "s", "m", "h".
1 | d, _ := time.ParseDuration("1h30m") |
添加时间
1 | d, _ := time.ParseDuration("1h30m") |
比较
1 |
|
最近热读
扫码关注公众号,或搜索公众号“温欣爸比”
及时获取我的最新文章