亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Golang time包中的函數(shù)用法詳解

 更新時間:2023年08月10日 09:42:06   作者:路多辛  
在日常開發(fā)過程中,會頻繁遇到對時間進行操作的場景,使用 Golang 中的 time 包可以很方便地實現(xiàn)對時間的相關操作,接下來的幾篇文章會詳細講解 time 包,本文講解一下 time 包中的函數(shù),需要的朋友可以參考下

func Now() Time

返回當前的系統(tǒng)時間。

package main
import (
	"fmt"
	"time"
)
func main() {
  now := time.Now()  
  fmt.Println(now.Unix())
}

func Parse(layout, value string) (Time, error)

將字符串解析為時間類型,并返回對應的 Time 對象。layout 參數(shù)是表示時間的格式,例如"2006-01-02 15:04:05"表示年、月、日、時、分、秒的格式。

package main
import (
	"fmt"
	"time"
)
func main() {
  layout := "2006-01-02 15:04:05"  
  str := "2023-07-19 12:34:56"  
  t, _ := time.Parse(layout, str)  
  fmt.Println(t)
}

func ParseDuration(s string) (Duration, error)

用于將字符串解析為 Duration 類型。

package main
import (
	"fmt"
	"time"
)
func main() {
	durationStr := "2h45m"
	duration, err := time.ParseDuration(durationStr)
	if err != nil {
		fmt.Println("解析持續(xù)時間錯誤:", err)
		return
	}
	fmt.Printf("解析后的持續(xù)時間為:%v\n", duration)
}

func ParseInLocation(layout, value string, loc *Location) (Time, error)

用于將字符串解析為 Time 類型,并在指定的時區(qū)中解析時間。

package main
import (
	"fmt"
	"time"
)
func main() {
	location := time.FixedZone("CustomZone", 2*60*60) // 創(chuàng)建一個偏移量為2小時的固定時區(qū)
	timeString := "2023-07-18 14:30:00"               // 要解析的字符串
	t, err := time.ParseInLocation("2006-01-02 15:04:05", timeString, location)
	if err != nil {
		fmt.Println("解析時間錯誤:", err)
		return
	}
	fmt.Printf("解析后的時間為:%v\n", t)
}

func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time

根據(jù)給定的年、月、日、時、分、秒和納秒創(chuàng)建一個 Time 對象,loc 參數(shù)表示時區(qū)。

package main
import (
	"fmt"
	"time"
)
func main() {
  t := time.Date(2023, 7, 19, 12, 34, 56, 0, time.UTC)  
  fmt.Println(t)
}

func Since(t Time) Duration

返回從當前時間到 t 之間的時間差,以納秒為單位。

package main
import (
	"fmt"
	"time"
)
func main() {
  t := time.Date(2023, 7, 19, 12, 34, 56, 0, time.UTC)  
  duration := time.Since(t)  
  fmt.Println(duration)
}

func Until(t Time) Duration

返回從 t 到當前時間之間的時間差,以納秒為單位。

package main
import (
	"fmt"
	"time"
)
func main() {
  t := time.Date(2023, 7, 19, 12, 34, 56, 0, time.UTC)  
  duration := time.Until(t)  
  fmt.Println(duration)
}

func After(d Duration) <-chan Time

用于創(chuàng)建一個通道,將在指定的時間間隔后向通道發(fā)送一個 time.Time 類型的值。

package main
import (
	"fmt"
	"time"
)
func main() {
	// 創(chuàng)建一個將在5秒后發(fā)送值的通道
	timer := time.After(5 * time.Second)
	// 等待通道發(fā)送值
	fmt.Println(<-timer)
}

func AfterFunc(d Duration, f func()) *Timer

用于創(chuàng)建一個定時器,并在指定的時間間隔后執(zhí)行一個函數(shù)。

package main
import (
	"fmt"
	"time"
)
func main() {
	// 創(chuàng)建一個將在5秒后觸發(fā)的定時器
	timer := time.AfterFunc(5*time.Second, func() {
		fmt.Println("路多辛的博客!")
	})
	// 停止定時器
	time.Sleep(10 * time.Second)
	timer.Stop()
	// 輸出:路多辛的博客!
	fmt.Println("Program ended")
}

func Unix(sec int64, nsec int64) Time

用于將 Unix 時間戳轉(zhuǎn)換為時間類型。

package main
import (
	"fmt"
	"time"
)
func main() {
	// 定義一個Unix時間戳
	unixTime := int64(1691587957)
	// 使用time.Unix函數(shù)將Unix時間戳轉(zhuǎn)換為時間類型
	t := time.Unix(unixTime, 0)
	// 打印結果
	fmt.Println(t)
}

func UnixMilli(msec int64) Time

用于將毫秒時間戳轉(zhuǎn)換為時間類型。

package main
import (
	"fmt"
	"time"
)
func main() {
	t := time.UnixMilli(1691587957000)
	// 打印結果
	fmt.Println(t)
}

func UnixMicro(usec int64) Time

用于將微秒時間戳轉(zhuǎn)換為時間類型。

package main
import (
	"fmt"
	"time"
)
func main() {
	t := time.UnixMilli(1691587957000000)
	// 打印結果
	fmt.Println(t)
}

func Tick(d Duration) <-chan Time

用于創(chuàng)建一個定時器,該定時器每隔一定的時間間隔就會向通道發(fā)送當前的時間。

package main
import (
	"fmt"
	"time"
)
func main() {
	// 創(chuàng)建一個每隔1秒進行一次打印的定時器
	ticker := time.Tick(1 * time.Second)
	for {
		<-ticker // 等待定時器的發(fā)送
		fmt.Println("這是ticker的打印")
	}
}

func LoadLocation(name string) (*Location, error)

用于加載并返回一個特定的時區(qū)。

package main
import (
	"fmt"
	"time"
)
func main() {
	// 加載"Asia/Shanghai"時區(qū)
	location, err := time.LoadLocation("Asia/Shanghai")
	if err != nil {
		fmt.Println("無法加載時區(qū):", err)
		return
	}
	// 使用該時區(qū)創(chuàng)建一個時間對象
	t := time.Now().In(location)
	fmt.Println("當前時間:", t)
}

func LoadLocationFromTZData(name string, data []byte) (*Location, error)

用于從 TZ 數(shù)據(jù)中加載并返回一個時區(qū)。

package main
import (
	"fmt"
	"time"
)
func main() {
	// 加載"Asia/Shanghai"時區(qū)
	location, err := time.LoadLocationFromTZData("Asia/Shanghai")
	if err != nil {
		fmt.Println("無法加載時區(qū):", err)
		return
	}
	// 使用該時區(qū)創(chuàng)建一個時間對象
	t := time.Now().In(location)
	fmt.Println("當前時間:", t)
}

func FixedZone(name string, offset int) *Location

用于創(chuàng)建一個具有固定偏移量的時區(qū)。

package main
import (
	"fmt"
	"time"
)
func main() {
	// 創(chuàng)建一個偏移量為2小時的固定時區(qū)
	location := time.FixedZone("CustomZone", 2*60*60)
	// 使用該時區(qū)創(chuàng)建一個時間對象
	t := time.Now().In(location)
	fmt.Println("當前時間:", t)
}

func NewTicker(d Duration) *Ticker

用于創(chuàng)建一個新的 Ticker 對象,該對象可以在指定的時間間隔重復發(fā)送 Time 值。

package main
import (
	"fmt"
	"time"
)
func main() {
	// 創(chuàng)建一個每秒發(fā)送一次的 Ticker 對象
	ticker := time.NewTicker(1 * time.Second)
	defer ticker.Stop()
	for {
		select {
		case <-ticker.C:
			fmt.Println("打印一次路多辛的博客")
		}
	}
}

func NewTimer(d Duration) *Timer

用于創(chuàng)建一個新的 Timer 對象,該對象可以在指定的時間間隔后發(fā)送一個 Time 類型的值。

package main
import (
	"fmt"
	"time"
)
func main() {
	// 創(chuàng)建一個定時器,在2秒后發(fā)送一個時間值
	timer := time.NewTimer(2 * time.Second)
	defer timer.Stop()
	// 使用定時器發(fā)送的時間值處理函數(shù)
	timerHandler := func() {
		fmt.Println("收到時間值")
	}
	// 在定時器發(fā)送時間值之前執(zhí)行處理函數(shù)
	go timerHandler()
	// 等待定時器發(fā)送時間值
	select {
	case <-timer.C:
		fmt.Println("定時器已發(fā)送時間值")
	}
}

func Sleep(d Duration)

讓當前的 goroutine 休眠指定的時間。

package main
import (
	"fmt"
	"time"
)
func main() {
	fmt.Println("開始休眠")
	time.Sleep(2 * time.Second)
	fmt.Println("休眠結束")
}

以上就是Golang time包中的函數(shù)詳解的詳細內(nèi)容,更多關于Golang time包函數(shù)的資料請關注腳本之家其它相關文章!

相關文章

  • 一文掌握Golang模糊測試

    一文掌握Golang模糊測試

    本文主要介紹了一文掌握Golang模糊測試,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Golang工具庫viper的使用教程

    Golang工具庫viper的使用教程

    viper?是?go?項目中用來讀取配置文件的庫,支持讀取?yaml、toml、json、hcl、env?等格式的配置文件,下面就來和大家聊聊它的具體使用吧
    2023-07-07
  • golang 如何用反射reflect操作結構體

    golang 如何用反射reflect操作結構體

    這篇文章主要介紹了golang 用反射reflect操作結構體的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 解決golang時間字符串轉(zhuǎn)time.Time的坑

    解決golang時間字符串轉(zhuǎn)time.Time的坑

    這篇文章主要介紹了解決golang時間字符串轉(zhuǎn)time.Time的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • goland遠程調(diào)試k8s上容器的實現(xiàn)

    goland遠程調(diào)試k8s上容器的實現(xiàn)

    本文主要介紹了goland遠程調(diào)試k8s上容器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • golang中json反序列化可能遇到的問題

    golang中json反序列化可能遇到的問題

    這篇文章主要給大家介紹了關于golang中json反序列化可能遇到的問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • Golang 實現(xiàn)Thrift客戶端連接池方式

    Golang 實現(xiàn)Thrift客戶端連接池方式

    這篇文章主要介紹了Golang 實現(xiàn)Thrift客戶端連接池方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang?IOT中的數(shù)據(jù)序列化與解析過程

    Golang?IOT中的數(shù)據(jù)序列化與解析過程

    這篇文章主要介紹了Golang?IOT中的數(shù)據(jù)序列化與解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Go語言流程控制之goto語句與無限循環(huán)

    Go語言流程控制之goto語句與無限循環(huán)

    這篇文章主要介紹了Go語言流程控制之goto語句與無限循環(huán),是golang入門學習中的基礎知識,需要的朋友可以參考下
    2015-10-10
  • Go使用TimerController解決timer過多的問題

    Go使用TimerController解決timer過多的問題

    多路復用,實際上Go底層也是一種多路復用的思想去實現(xiàn)的timer,但是它是底層的timer,我們需要解決的問題就過多的timer問題!本文給大家介紹了Go使用TimerController解決timer過多的問題,需要的朋友可以參考下
    2024-12-12

最新評論