概述
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*/
扩大浏览
- https://www.jianshu.com/p/c7f...
- https://jishuin.proginn.com/p...