在日常开发中,时间的计算和处理是必不可少的。对于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()