日常开发过程中,会频繁遇到对时间进行操作场景使用 Golang 中的 time可以很方便地实现对时间的相关操作。接下来的几篇文章详细讲解 time 包,本文讲解一下 time 包中time.Duration 类型

time.Duration

time.Duration 类型一个符号int64 类型,以纳秒为单位用来表示两个时间点之间的时长。类型定义如下

type Duration int64

拥有的方法如下

package main

import (
	"fmt"
	"time"
)

func main() {
	a := time.Duration(3) * time.Hour
	fmt.Println(a.Hours())        // 3
	fmt.Println(a.Minutes())      // 180
	fmt.Println(a.Seconds())      //10800
	fmt.Println(a.Milliseconds()) //10800000
	fmt.Println(a.Microseconds()) //10800000000
	fmt.Println(a.Nanoseconds())  //10800000000000
	fmt.Println(a.String())       //3h0m0s
}
package main

import (
	"fmt"
	"time"
)

func main() {
	a := time.Duration(10) * time.Minute
	// 结果为 10,10 正好是 1 的整数倍
	fmt.Println(a.Round(time.Duration(1) * time.Minute))
	// 结果为 9,3 的 3 倍是 9,3 的 4 倍是 12,9 和 10 离得更近
	fmt.Println(a.Round(time.Duration(3) * time.Minute))
	// 结果为 12,4 的 2 倍是 8,4 的 3 倍是 12,距离一样近往上入
	fmt.Println(a.Round(time.Duration(4) * time.Minute))
	// 结果为 10,10 正好是 5 的整数倍
	fmt.Println(a.Round(time.Duration(5) * time.Minute))
	// 结果为12, 6 的 1 倍是 6,6 的 2 倍是 12,10 离 12 更近
	fmt.Println(a.Round(time.Duration(6) * time.Minute))
}
package main

import (
	"fmt"
	"time"
)

func main() {
	a := time.Duration(10) * time.Minute
	// 结果为 10,10 正好是 1 的整数fmt.Println(a.Truncate(time.Duration(1) * time.Minute))
	// 结果为 9,3 的 3 倍是 9,最接近 10
	fmt.Println(a.Truncate(time.Duration(3) * time.Minute))
	// 结果为 8,4 的 2 倍是 8,最接近 10
	fmt.Println(a.Truncate(time.Duration(4) * time.Minute))
	// 结果为 10,10 正好是 5 的整数倍
	fmt.Println(a.Truncate(time.Duration(5) * time.Minute))
	// 结果为 6,6 的 1 倍是 6,最接近 10
	fmt.Println(a.Truncate(time.Duration(6) * time.Minute))
	// 结果为 0,11 的 1 倍是11,大于了 10
	fmt.Println(a.Truncate(time.Duration(11) * time.Minute))
}

加减法运算

因为 time.Duration 表示的是时间段,可以对 time.Duration 类型的值进行加减法运算例如

package main

import (
	"fmt"
	"time"
)

func main() {
	a := time.Duration(10) * time.Minute
	b := time.Duration(10) * time.Second
	fmt.Println(a + b)
	fmt.Println(a - b)
}

原文地址:https://blog.csdn.net/luduoyuan/article/details/131969641

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_47470.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注