在日常开发中,时间的计算和处理是必不可少的。对于Golang这种强调便捷和高效的编程语言来说,处理时间的方式也是比较简单和灵活的。本文将从多个方面对Golang时间加减做详细的阐述。
一、时间类型
time.Timetime.Durationtime.Timetime.Duration
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2021, 10, 1, 0, 0, 0, 0, time.UTC)
fmt.Println(t)
d := time.Since(t)
fmt.Println(d)
}
输出结果:
2021-10-01 00:00:00 +0000 UTC
307h15m36.190432192s
time.Date()ttime.Since()td
二、时间加减
time.Add()time.Duration
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
fmt.Println(t)
d := 2 * time.Hour
t1 := t.Add(d)
fmt.Println(t1)
}
输出结果:
2021-10-10 10:42:53.21933 +0800 CST m=+0.000148564
2021-10-10 12:42:53.21933 +0800 CST
time.Now()tdt.Add()dtt1t1
三、时间戳转换
time.Unix()time.Timetime.TimeUnix()
package main
import (
"fmt"
"time"
)
func main() {
unixTime := int64(1633833253)
t := time.Unix(unixTime, 0)
fmt.Println(t)
unixTime1 := t.Unix()
fmt.Println(unixTime1)
}
输出结果:
2021-10-10 12:47:33 +0800 CST
1633833253
unixTimetime.Unix()time.Timett.Unix()tunixTime1
四、时区转换
time.LoadLocation()time.In()
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
fmt.Println(t)
loc, _ := time.LoadLocation("Asia/Shanghai")
t1 := t.In(loc)
fmt.Println(t1)
}
输出结果:
2021-10-10 12:57:38.367191 +0800 CST m=+0.000120773
2021-10-10 12:57:38.367191 +0800 CST
time.Now()ttime.LoadLocation()loct.In()tloct1
五、时钟周期转换
time.Tick()
package main
import (
"fmt"
"time"
)
func main() {
c := time.Tick(time.Second)
for now := range c {
fmt.Printf("%v\n", now)
}
}
输出结果:
2021-10-10 13:06:59.355581 +0800 CST m=+1.000329415
2021-10-10 13:07:00.3557 +0800 CST m=+2.000448322
2021-10-10 13:07:01.355883 +0800 CST m=+3.000631710
2021-10-10 13:07:02.356083 +0800 CST m=+4.000831667
...
time.Tick()cc
总结
time.Timetime.Durationtime.Add()time.Unix()time.TimeUnix()time.LoadLocation()time.In()time.Tick()