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

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

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

time.Duration

time.Duration 類型是一個(gè)有符號(hào)的 int64 類型,以納秒為單位,用來(lái)表示兩個(gè)時(shí)間點(diǎn)之間的時(shí)長(zhǎng)。類型定義如下:

type Duration int64

擁有的方法如下:

  • func (d Duration) Hours() float64,返回持續(xù)的時(shí)間,以小時(shí)為單位。
  • func (d Duration) Minutes() float64,返回持續(xù)的時(shí)間,以分鐘為單位。
  • func (d Duration) Seconds() float64,返回持續(xù)的時(shí)間,以秒為單位。
  • func (d Duration) Milliseconds() int64,返回持續(xù)的時(shí)間,以毫秒為單位。
  • func (d Duration) Microseconds() int64,返回持續(xù)的時(shí)間,以微秒為單位。
  • func (d Duration) Nanoseconds() int64,返回持續(xù)的時(shí)間,以納秒為單位。
  • func (d Duration) String() string,返回一個(gè)字符串類型的持續(xù)的時(shí)間,格式為 “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é)果。通過(guò)示例理解一下:
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 截?cái)嗟?m 最近整數(shù)倍。通過(guò)示例理解一下:
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))
}

加減法運(yùn)算

因?yàn)?nbsp;time.Duration 表示的是時(shí)間段,可以對(duì) time.Duration 類型的值進(jìn)行加減法運(yùn)算,例如:

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)
}

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

相關(guān)文章

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

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

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

    詳解Golang?Map中的key為什么是無(wú)序的

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

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

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

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

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

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

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

    一篇文章搞懂Go語(yǔ)言中的Context

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

    重學(xué)Go語(yǔ)言之變量與常量的聲明與使用詳解

    變量、常量的聲明與使用是掌握一門編程語(yǔ)言的基礎(chǔ),在這篇文章中,小編就來(lái)帶大家學(xué)習(xí)一下Go語(yǔ)言是怎么樣聲明和使用變量與常量吧
    2023-03-03
  • 在Golang代碼中如何自動(dòng)生成版本號(hào)的方法示例

    在Golang代碼中如何自動(dòng)生成版本號(hào)的方法示例

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

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

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

    Golang學(xué)習(xí)之無(wú)類型常量詳解

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

最新評(píng)論