共计 2172 个字符,预计需要花费 6 分钟才能阅读完成。
概述
Go 中和工夫相干的操作全副在 time
包。
语法规定
调用 time
包即可,重要的一点是: 不管将工夫格式化为字符串,还是将字符串解析为工夫,
用到的工夫参数固定为 2006-01-02 15:04:05
(至于为什么硬编码为这个工夫,感兴趣的读者能够看看扩大浏览上面的文章), 而不是随便的工夫参数,比方 2018-08-08 18:28:38
。
例子
工夫格式化
package main
import (
"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 main
import (
"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 main
import (
"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 main
import (
"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 main
import (
"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 main
import (
"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…
分割我
正文完