Golang time.Time.Truncate()函数及其示例
在Go语言中,time包为时间相关操作提供了一系列函数和类型,其中time.Time.Truncate()函数可以截断时间值到更早的日期或时间。
函数说明
time.Time.Truncate()函数的定义如下:
func (t Time) Truncate(d Duration) Time
该函数会将时间值t截断到d的整数倍。例如,如果d为1天,则该函数会将时、分、秒截断为0。若d为1小时,则该函数会将分、秒截断为0。
该函数返回被截断后的时间值,但原时间值t不会改变。
示例代码
以下是对time.Time.Truncate()函数的一些示例代码:
- 将时间值t截断到天:
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
truncated := t.Truncate(24 * time.Hour)
fmt.Println("原时间值:", t)
fmt.Println("截断后时间值:", truncated)
}
该示例中,我们使用time.Now()函数获取当前时间值,然后将其截断到天。输出结果如下:
原时间值: 2022-05-04 14:18:28.87886 +0800 CST m=+0.000115297
截断后时间值: 2022-05-04 00:00:00 +0800 CST
可见,时、分、秒都被截断为0,只剩下年、月、日。
- 将时间值t截断到小时:
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
truncated := t.Truncate(time.Hour)
fmt.Println("原时间值:", t)
fmt.Println("截断后时间值:", truncated)
}
该示例中,我们同样使用time.Now()函数获取当前时间值,然后将其截断到小时。输出结果如下:
原时间值: 2022-05-04 14:18:28.87886 +0800 CST m=+0.000227003
截断后时间值: 2022-05-04 14:00:00 +0800 CST
可见,分、秒都被截断为0,只剩下年、月、日、时。而时的值为14,与原时间值相同。
结论
time.Time.Truncate()函数可以用于将时间值截断到更早的日期或者时间。在实际应用中,可以使用该函数保留时间值某一范围内的公共部分。需要注意的是,该函数返回的是截断后的时间值,而原时间值不会发生改变。