欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Golang time包中的time.Duration類型

 更新時間:2023年07月28日 09:22:55   作者:路多辛  
在日常開發(fā)過程中,會頻繁遇到對時間進行操作的場景,使用 Golang 中的 time 包可以很方便地實現(xiàn)對時間的相關操作,本文講解一下 time 包中的 time.Duration 類型,需要的朋友可以參考下

time.Duration

time.Duration 類型是一個有符號的 int64 類型,以納秒為單位,用來表示兩個時間點之間的時長。類型定義如下:

type Duration int64

擁有的方法如下:

  • func (d Duration) Hours() float64,返回持續(xù)的時間,以小時為單位。
  • func (d Duration) Minutes() float64,返回持續(xù)的時間,以分鐘為單位。
  • func (d Duration) Seconds() float64,返回持續(xù)的時間,以秒為單位。
  • func (d Duration) Milliseconds() int64,返回持續(xù)的時間,以毫秒為單位。
  • func (d Duration) Microseconds() int64,返回持續(xù)的時間,以微秒為單位。
  • func (d Duration) Nanoseconds() int64,返回持續(xù)的時間,以納秒為單位。
  • func (d Duration) String() string,返回一個字符串類型的持續(xù)的時間,格式為 “72h3m0.5s”。示例如下:
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
}
  • func (d Duration) Round(m Duration) Duration,返回將 d 四舍五入到 m 的最接近倍數(shù)的結(jié)果。通過示例理解一下:
package main
import (
	"fmt"
	"time"
)
func main() {
	a := time.Duration(10) * time.Minute
	// 結(jié)果為 10,10 正好是 1 的整數(shù)倍
	fmt.Println(a.Round(time.Duration(1) * time.Minute))
	// 結(jié)果為 9,3 的 3 倍是 9,3 的 4 倍是 12,9 和 10 離得更近
	fmt.Println(a.Round(time.Duration(3) * time.Minute))
	// 結(jié)果為 12,4 的 2 倍是 8,4 的 3 倍是 12,距離一樣近往上入
	fmt.Println(a.Round(time.Duration(4) * time.Minute))
	// 結(jié)果為 10,10 正好是 5 的整數(shù)倍
	fmt.Println(a.Round(time.Duration(5) * time.Minute))
	// 結(jié)果為12, 6 的 1 倍是 6,6 的 2 倍是 12,10 離 12 更近
	fmt.Println(a.Round(time.Duration(6) * time.Minute))
}
  • func (d Duration) Truncate(m Duration) Duration,用于將 d 截斷到 m 最近整數(shù)倍。通過示例理解一下:
package main
import (
	"fmt"
	"time"
)
func main() {
	a := time.Duration(10) * time.Minute
	// 結(jié)果為 10,10 正好是 1 的整數(shù)倍
	fmt.Println(a.Truncate(time.Duration(1) * time.Minute))
	// 結(jié)果為 9,3 的 3 倍是 9,最接近 10
	fmt.Println(a.Truncate(time.Duration(3) * time.Minute))
	// 結(jié)果為 8,4 的 2 倍是 8,最接近 10
	fmt.Println(a.Truncate(time.Duration(4) * time.Minute))
	// 結(jié)果為 10,10 正好是 5 的整數(shù)倍
	fmt.Println(a.Truncate(time.Duration(5) * time.Minute))
	// 結(jié)果為 6,6 的 1 倍是 6,最接近 10
	fmt.Println(a.Truncate(time.Duration(6) * time.Minute))
	// 結(jié)果為 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)
}

到此這篇關于詳解Golang time包中的time.Duration類型的文章就介紹到這了,更多相關Golang time.Duration內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Golang如何調(diào)用windows下的dll動態(tài)庫中的函數(shù)

    Golang如何調(diào)用windows下的dll動態(tài)庫中的函數(shù)

    這篇文章主要介紹了Golang如何調(diào)用windows下的dll動態(tài)庫中的函數(shù)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • 詳解Golang?Map中的key為什么是無序的

    詳解Golang?Map中的key為什么是無序的

    本文主要介紹了Golang?Map中的key為什么是無序的,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 詳解go如何使用xorm在執(zhí)行前改寫?SQL

    詳解go如何使用xorm在執(zhí)行前改寫?SQL

    這篇文章主要為大家介紹了詳解go如何使用xorm在執(zhí)行前改寫SQL的實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • golang整合日志zap的實現(xiàn)示例

    golang整合日志zap的實現(xiàn)示例

    Go語言中的zap庫提供了強大的日志管理功能,支持日志記錄到文件、日志切割、多日志級別、結(jié)構(gòu)化日志輸出等,它通過三種方法zap.NewProduction()、zap.NewDevelopment()和zap.NewExample(),快速構(gòu)建適用于不同環(huán)境的logger,感興趣的可以了解一下
    2024-10-10
  • 一文帶你了解Go語言實現(xiàn)的并發(fā)神庫conc

    一文帶你了解Go語言實現(xiàn)的并發(fā)神庫conc

    前幾天逛github發(fā)現(xiàn)了一個有趣的并發(fā)庫-conc,這篇文章將為大家詳細介紹一下這個庫的實現(xiàn),文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-01-01
  • 一篇文章搞懂Go語言中的Context

    一篇文章搞懂Go語言中的Context

    這篇文章主要介紹了一篇文章搞懂Go語言中的Context,Context攜帶一個截止日期、一個取消信號和其他跨越API邊界的值。上下文的方法可以被多個gor例程同時調(diào)用
    2022-07-07
  • 重學Go語言之變量與常量的聲明與使用詳解

    重學Go語言之變量與常量的聲明與使用詳解

    變量、常量的聲明與使用是掌握一門編程語言的基礎,在這篇文章中,小編就來帶大家學習一下Go語言是怎么樣聲明和使用變量與常量吧
    2023-03-03
  • 在Golang代碼中如何自動生成版本號的方法示例

    在Golang代碼中如何自動生成版本號的方法示例

    這篇文章主要給大家介紹了在Golang代碼中如何自動生成版本號的相關資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • Go語言提升開發(fā)效率的語法糖技巧分享

    Go語言提升開發(fā)效率的語法糖技巧分享

    每門語言都有自己的語法糖,像java的語法糖就有方法變長參數(shù)、拆箱與裝箱、枚舉、for-each等等,Go語言也不例外。本文就來介紹一些Go語言的語法糖,需要的可以參考一下
    2022-07-07
  • Golang學習之無類型常量詳解

    Golang學習之無類型常量詳解

    對于無類型常量,可能大家是第一次聽說,但我們每天都在用,每天都有無數(shù)潛在的坑被埋下。本文就來和大家聊聊它的相關注意事項吧,希望對大家有所幫助
    2023-03-03

最新評論