Go?語言入門學(xué)習(xí)之時間包
1.前言
時間和日期對于任何編程語言來說都是一個非常重要的包。 GO 語言 提供了 ??time?? 包來測量和顯示時間。既可以根據(jù)所選時區(qū)獲取當(dāng)前時間,又可以使用 ??time?? 包添加當(dāng)前時區(qū)的持續(xù)時間等。
2.日期和時間的表示
??time?? 包提供了時間類型,用來表示時間中的一個特定時刻,主要有以下幾個函數(shù):
Now()函數(shù):返回當(dāng)前時區(qū)的當(dāng)前時間Date(y, m, d, h, min, sec, nsec, loc): 該函數(shù)創(chuàng)建一個時間,代表一個指定的時間點(diǎn),該時間點(diǎn)由 用年、月、日、小時、分鐘、秒、納秒和位置參數(shù)表示。Unix(sec, nsec): 這個函數(shù)從 1970 年 1 月 1 日 UTC 以來的秒數(shù)和納秒數(shù)創(chuàng)建一個時間值,通常稱為 Unix 時間。

當(dāng)前時間
可以直接通過 ??time.Now()?? 函數(shù)獲取當(dāng)前時間:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println("Hello, 一起學(xué)習(xí) Dates And Times")
fmt.Printf("現(xiàn)在是北京時間:%s", now)
}運(yùn)行代碼:
$ go run main.go
Hello, 一起學(xué)習(xí) Dates And Times
現(xiàn)在是北京時間:2022-04-23 23:20:10.3383785 +0800 CST m=+0.004403601
日期函數(shù)
日期函數(shù)返回 ??yyyy-mm-dd hh:mm:ss + nsec?? 納秒所對應(yīng)的時間。
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("Hello, 一起學(xué)習(xí) Dates And Times")
date := time.Date(2022, 02, 22, 22, 22, 22, 222222222, time.UTC)
fmt.Printf("Date is %s\n", date)
}運(yùn)行代碼:
$ go run main.go
Hello, 一起學(xué)習(xí) Dates And Times
Date is 2022-02-22 22:22:22.222222222 +0000 UTC
如何在Golang中獲取當(dāng)前UNIX的時間戳
你可以使用 ??now()?? 方法獲得當(dāng)前時間,它的 ??Unix()??方法可以幫助我們將時間轉(zhuǎn)換為 UNIX 時間戳。
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("Hello, 一起學(xué)習(xí) Dates And Times")
cur_time := time.Now().Unix()
fmt.Printf("當(dāng)前 Unix 時間戳: %v\n", cur_time)
}運(yùn)行該代碼,記錄一下你此時運(yùn)行這段代碼的唯一的 Unix 時間戳:
Hello, 一起學(xué)習(xí) Dates And Times
當(dāng)前 Unix 時間戳: 1650728863
3.訪問時間組件的方法

- 如何將年、月和日添加到當(dāng)前時間
??AddDate?? 方法幫助添加年、月、日到對應(yīng)的日期,這可以是任何日期。你可以傳遞整數(shù)類型的年、月、日的值。返回類型是時間。你可以傳遞三個參數(shù)中的任何一個。
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("Hello, 一起學(xué)習(xí) Dates And Times")
date := time.Date(2022, 02, 22, 22, 22, 22, 222222222, time.UTC)
next_date := date.AddDate(1, 2, 1)
fmt.Printf("Date is %s\n", date)
fmt.Printf("Next date is %s\n", next_date)
}運(yùn)行結(jié)果:
Hello, 一起學(xué)習(xí) Dates And Times
Date is 2022-02-22 22:22:22.222222222 +0000 UTC
Next date is 2023-04-23 22:22:22.222222222 +0000 UTC
- 如何將小時、分鐘、秒添加到當(dāng)前時間中
??time?? 包提供了 ??add()?? 方法來獲取基于傳遞值的未來時間。這個方法需要整數(shù)的小時、分鐘、秒。
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("Hello, 一起學(xué)習(xí) Dates And Times")
cur_time := time.Now()
next_time := cur_time.Add(time.Hour*2 + time.Minute*1 + time.Second*22)
fmt.Printf("當(dāng)前時間: %s\n", cur_time)
fmt.Printf("時間相加后的下一個時間段: %s\n", next_time)
}運(yùn)行結(jié)果:
Hello, 一起學(xué)習(xí) Dates And Times
當(dāng)前時間: 2022-04-23 23:42:26.6081221 +0800 CST m=+0.006779901
時間相加后的下一個時間段: 2022-04-24 01:43:48.6081221 +0800 CST m=+7282.006779901
此外還有星期,定義了兩種類型來幫助描述時間值的組成部分:

如何在Golang中解析日期字符串?
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("Hello, 一起學(xué)習(xí) Dates And Times")
date := "2022-02-22T22:22:22.221Z"
parse_time, _ := time.Parse(time.RFC3339, date)
fmt.Printf("自定義日期: %s\n", date)
fmt.Printf("解析時間: %s\n", parse_time)
}運(yùn)行該代碼:
Hello, 一起學(xué)習(xí) Dates And Times
自定義日期: 2022-02-22T22:22:22.221Z
解析時間: 2022-02-22 22:22:22.221 +0000 UTC
到此這篇關(guān)于Go 語言入門學(xué)習(xí)之時間包的文章就介紹到這了,更多相關(guān)Go 時間包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Golang標(biāo)準(zhǔn)庫flag的全面講解
這篇文章主要介紹了關(guān)于Golang標(biāo)準(zhǔn)庫flag的全面講解,這個庫的代碼量只有1000行左右,卻提供了非常完善的命令行參數(shù)解析功能,更多相關(guān)內(nèi)容需要的朋友可以參考一下2022-09-09
Go基礎(chǔ)教程系列之回調(diào)函數(shù)和閉包詳解
這篇文章主要介紹了Go基礎(chǔ)教程系列之回調(diào)函數(shù)和閉包詳解,需要的朋友可以參考下2022-04-04

