概述

Go 中和工夫相干的操作全副在 time 包。

语法规定

调用 time 包即可,重要的一点是: 不管将工夫格式化为字符串,还是将字符串解析为工夫,
用到的工夫参数固定为 2006-01-02 15:04:05 (至于为什么硬编码为这个工夫,感兴趣的读者能够看看扩大浏览上面的文章),而不是随便的工夫参数,比方 2018-08-08 18:28:38

例子

工夫格式化

package mainimport (    "fmt"    "time")func main() {    now := time.Now()    fmt.Println(now.Format("2006-01-02 15:04:05"))    fmt.Println(now.Format("2006年01月02日 15时04分05秒"))}// $ go run main.go// 输入如下, 你的输入应该和这里的不一样/**  2021-11-03 21:01:04  2021年11月03日 21时01分04秒*/

字符串解析为工夫

package mainimport (    "fmt"    "time")func main() {    s := `2021-11-03 21:01:04`    t, err := time.Parse("2006-01-02 15:04:05", s)    if err != nil {        panic(err)    }    fmt.Println(t.Format("2006-01-02 15:04:05"))    fmt.Println(t.Format("2006年01月02日 15时04分05秒"))}// $ go run main.go// 输入如下/**  2021-11-03 21:01:04  2021年11月03日 21时01分04秒*/

获取年月日时分秒等属性

package mainimport (    "fmt"    "time")func main() {    now := time.Now()    fmt.Println(now.Year())    fmt.Printf("%d\n", now.Month())    fmt.Println(now.Day())    fmt.Println(now.Hour())    fmt.Println(now.Minute())    fmt.Println(now.Second())}// $ go run main.go// 输入如下, 你的输入应该和这里的不一样/**  2021  11  3  21  20  7*/

工夫加减

package mainimport (    "fmt"    "time")func main() {    now := time.Now()    afterHour := now.Add(time.Hour) // 以后工夫加 1 个小时    fmt.Println(afterHour.Format("2006-01-02 15:04:05"))    beforeHour := now.Add(-time.Hour) // 以后工夫减  1 个小时    fmt.Println(beforeHour.Format("2006-01-02 15:04:05"))}// $ go run main.go// 输入如下, 你的输入应该和这里的不一样/**  After a hour: 2021-11-03 21:36:17  Before a hour: 2021-11-03 20:36:17  After a year: 2022-11-03 21:40:43  Before a year: 2020-11-03 21:40:43*/

工夫比拟

package mainimport (    "fmt"    "time")func main() {    now := time.Now()    afterHour := now.Add(time.Hour) // 以后工夫加 1 个小时    fmt.Printf("afterHour after now = %t\n", afterHour.After(now))    beforeHour := now.Add(-time.Hour) // 以后工夫减  1 个小时    fmt.Printf("beforeHour before now = %t\n", beforeHour.After(now))}// $ go run main.go// 输入如下/**  afterHour after now = true  beforeHour before now = false*/

获取/解析 工夫戳

package mainimport (    "fmt"    "time")func main() {    now := time.Now()    fmt.Println(now.Unix())      // 单位: 秒    fmt.Println(now.UnixMilli()) // 单位: 毫秒    fmt.Println(now.UnixMicro()) // 单位: 奥妙    fmt.Println(now.UnixNano())  // 单位: 纳秒    var timestamp int64 = 1557433059    t := time.Unix(timestamp, 0)    fmt.Println(t.Format("2006-01-02 15:04:05"))}// $ go run main.go// 输入如下,你的输入可能和这里的不一样/**  1667433164  1667433164630  1667433164630949  1667433164630949000  2019-05-10 04:17:39*/

扩大浏览

  1. https://www.jianshu.com/p/c7f...
  2. https://jishuin.proginn.com/p...

分割我