Golang time.Time.Add() 函数及示例
在 Go 语言中,时间和日期操作是常见的需求,我们可以使用官方库 time
来完成这些操作。其中,time.Time
类型代表了一个时间点,它包含了日期、时间以及时区等信息。
在 time
包中,Time
类型有许多有用的方法,其中之一就是 time.Time.Add()
函数。这个函数用于在一个时间点上添加一个时长,例如在某个时间点上加上 10 秒或 1 分钟等。接下来我们将通过实例的方式,详细说明 time.Time.Add()
的使用方法。
例子说明
为了便于展示 time.Time.Add()
函数的使用方式,我们将演示以下两个场景:
- 在时间点上加上一个固定时长,例如 2 个小时、5 分钟等;
- 根据时间信息,计算出距离当前时间点一定时长之后的时间。
我们将分别对这两个场景进行说明。
场景一:在时间点上加上一个固定时长
我们首先来看一个简单的例子。下面的代码创建了一个时间点 t1
,然后调用 Add()
方法,在时间点上加上 2 个小时,最后打印出结果。
package main
import (
"fmt"
"time"
)
func main() {
t1 := time.Now()
t2 := t1.Add(2 * time.Hour)
fmt.Println(t1)
fmt.Println(t2)
}
代码输出:
2022-08-07 22:53:55.122812 +0800 CST m=+0.000086072
2022-08-08 00:53:55.122812 +0800 CST
可以看到,t2
表示在 t1
时间点上加上了 2 个小时的时间,结果正确。
类似地,我们也可以调用 Add()
方法,在时间点上加上其他的时长,例如 5 分钟、10 秒等等。代码演示如下:
package main
import (
"fmt"
"time"
)
func main() {
t1 := time.Now()
t2 := t1.Add(5 * time.Minute)
t3 := t1.Add(10 * time.Second)
fmt.Println(t1)
fmt.Println(t2)
fmt.Println(t3)
}
代码输出:
2022-08-07 22:58:51.680787 +0800 CST m=+0.000069940
2022-08-07 23:03:51.680787 +0800 CST
2022-08-07 22:59:01.680787 +0800 CST
我们可以看到,通过这种方式,在时间点上加上一个固定的时长非常容易。
场景二:计算距离当前时间一定时长之后的时间
接下来,我们来看一下如何根据时间信息,计算出距离当前时间点一定时长之后的时间。下面展示了一个具体的例子。代码首先获取当前时间点,然后计算出距离当前时间点 2 小时之后的时间,并打印出来。
package main
import (
"fmt"
"time"
)
func main() {
t1 := time.Now()
dur, _ := time.ParseDuration("2h")
t2 := t1.Add(dur)
fmt.Println(t1)
fmt.Println(t2)
}
代码输出:
2022-08-07 23:08:06.384766 +0800 CST m=+0.000063346
2022-08-08 01:08:06.384766 +0800 CST
同样,我们也可以使用不同的时间单位计算出一段时长之后的时间,例如 30 分钟、1 天、1 周、1 个月等等,只需要使用不同的字符串代替例子中的 2h
即可。例如下面的代码演示了如何计算距离当前时间一周之后的时间点:
package main
import (
"fmt"
"time"
)
func main() {
t1 := time.Now()
dur, _ := time.ParseDuration("168h")
t2 := t1.Add(dur)
fmt.Println(t1)
fmt.Println(t2)
}
代码输出:
2022-08-07 23:13:16.215754 +0800 CST m=+0.000066282
2022-08-14 23:13:16.215754 +0800 CST
我们可以看到,使用 time.Time.Add()
函数计算时间点非常方便,只需要传递一个时间间隔参数即可。同时,time.ParseDuration()
函数可以根据字符串解析出对应的时间间隔,这非常方便。
结论
通过以上的例子,我们详细说明了 time.Time.Add()
函数的使用方式。总的来说,这个函数非常简单易用,可以方便地在时间点上添加固定时长或计算出距离当前时间一定时长之后的时间点。在实际项目中,这个函数应该会经常被使用到。