最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go時間操作常用方法(推薦!)

 更新時間:2023年06月25日 11:30:07   作者:natsuiroginga  
平時開發(fā)過程中,時間相關(guān)的操作用的還是很多的,下面這篇文章主要給大家介紹了關(guān)于Go時間操作常用方法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. time 包

1.1. 時間類型

Go 語言中時間類型有兩種:

  • time.Time:表示時間的類型,常見的有兩種方式:
    • time.Now():獲取當(dāng)前的時間
    • time.Date():根據(jù)指定的年、月、日、時、分、秒、納秒等創(chuàng)建時間
  • time.Duration:表示兩個時間點(diǎn)之間經(jīng)過的時間,以納秒為單位

1.2. 時間戳

時間戳是自 1970 年 1 月 1 日(08:00:00GMT)至當(dāng)前時間的總毫秒數(shù)。它也被稱為 Unix 時間戳(UnixTimestamp)。

1.3. 時間間隔

time.Duration 是 time 包定義的一個類型,它代表兩個時間點(diǎn)之間經(jīng)過的時間,以納秒為單位。time.Duration 表示一段時間間隔,可表示的最長時間段大約 290 年。

1.4. 時間操作

Go 語言中時間操作主要有兩種:

  • 獲取時間:time.Now()、time.Date()
  • 格式化時間:time.Format()、time.Parse()

2. 獲取時間

2.1. 獲取當(dāng)前時間

Go 語言中通過 time.Now()函數(shù)獲取當(dāng)前時間,返回一個 time.Time 類型的本地時間。

func Now() Time
package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now() // 獲取當(dāng)前時間
    fmt.Printf("current time:%v\n", now)
}

2.2. 獲取指定時間

time.Date()函數(shù)可以獲取指定的時間,其參數(shù)分別是:年、月、日、時、分、秒、納秒、時區(qū)。

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

import (
    "fmt"
    "time"
)

func main() {
    // 獲取指定時間
    date := time.Date(2020, 1, 1, 0, 0, 0, 0, time.Local)
    fmt.Printf("date:%v\n", date)
}

3. 格式化時間

3.1. 時間類型轉(zhuǎn)字符串

Go 語言中可以通過 time.Time 類型的 Format()函數(shù)對時間進(jìn)行格式化,該函數(shù)的第一個參數(shù)是格式化的模板,模板里面的時間必須是 2006-01-02 15:04:05 這個時間,這個時間是固定的,不然就會出錯,第二個參數(shù)是要格式化的時間。

func (t Time) Format(layout string) string
package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now() // 獲取當(dāng)前時間
    // 格式化的模板為Go的出生時間2006年1月2號15點(diǎn)04分 Mon Jan
    fmt.Println(now.Format("2006-01-02 15:04:05.000 Mon Jan"))
    fmt.Println(now.Format("2006/01/02 15:04"))
    fmt.Println(now.Format("15:04 2006/01/02"))
}

3.2. 字符串轉(zhuǎn)時間類型

Go 語言中可以通過 time.Parse()函數(shù)對字符串進(jìn)行解析,生成對應(yīng)的 time.Time 類型的時間。

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

import (
    "fmt"
    "time"
)

func main() {
    // 加載時區(qū)
    loc, _ := time.LoadLocation("Asia/Shanghai")
    // 按照指定時區(qū)和指定格式解析字符串時間
    timeObj, err := time.ParseInLocation("2006/01/02 15:04:05", "2020/01/01 00:00:00", loc)
    if err != nil {
        fmt.Printf("parse time failed, err:%v\n", err)
        return
    }
    fmt.Println(timeObj)
}

4. 時間常量

const (
    Nanosecond  Duration = 1
    Microsecond          = 1000 * Nanosecond
    Millisecond          = 1000 * Microsecond
    Second               = 1000 * Millisecond
    Minute               = 60 * Second
    Hour                 = 60 * Minute
)

5. 時間操作

5.1. 獲取時間戳

時間戳是自 1970 年 1 月 1 日(08:00:00GMT)至當(dāng)前時間的總毫秒數(shù)。它也被稱為 Unix 時間戳(UnixTimestamp)。

func (t Time) Unix() int64
package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    timestamp1 := now.Unix()     // 時間戳
    timestamp2 := now.UnixNano() // 納秒時間戳
    fmt.Printf("current timestamp1:%v\n", timestamp1)
    fmt.Printf("current timestamp2:%v\n", timestamp2)
}

5.2. 時間間隔

time.Duration 是 time 包定義的一個類型,它代表兩個時間點(diǎn)之間經(jīng)過的時間,以納秒為單位。time.Duration 表示一段時間間隔,可表示的最長時間段大約 290 年。

const (
    Nanosecond  Duration = 1
    Microsecond          = 1000 * Nanosecond
    Millisecond          = 1000 * Microsecond
    Second               = 1000 * Millisecond
    Minute               = 60 * Second
    Hour                 = 60 * Minute
)
package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    // 程序執(zhí)行到這里會暫停2秒
    time.Sleep(2 * time.Second)
    fmt.Println("2 seconds later")
    // 兩個時間相減
    fmt.Printf("passed %v\n", time.Since(now))
}

5.3. 定時器

time.Timer 類型表示單次時間事件。當(dāng)定時器到期時,當(dāng)前時間會被發(fā)送給 C,除非定時器是被 AfterFunc 函數(shù)創(chuàng)建的。因此,如果程序持有定時器的唯一引用,當(dāng)定時器觸發(fā)時,它會被釋放,并停止定時器。

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

import (
    "fmt"
    "time"
)

func main() {
    timer := time.Tick(time.Second) // 定義一個1秒間隔的定時器
    for t := range timer {
        fmt.Println(t) // 1秒鐘執(zhí)行一次
    }
}

5.4. 定時器

time.Ticker 類型代表一個間隔觸發(fā)的時間事件,它會以一個間隔(例如,1 秒、1 分鐘等)觸發(fā)多次,發(fā)送一個事件給一個通道。

func Tick(d Duration) *Ticker
package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(time.Second) // 定義一個1秒間隔的定時器
    for t := range ticker.C {
        fmt.Println(t) // 1秒鐘執(zhí)行一次
    }
}

6. 時區(qū)

Go 語言中通過 LoadLocation()函數(shù)加載時區(qū)信息,它的參數(shù)是時區(qū)的名字。時區(qū)信息我們可以通過 time 包中的 LoadLocation(name string) (*Location, error)函數(shù)獲取,它返回一個 Location 對象,然后我們就可以通過 LoadLocation()函數(shù)加載時區(qū)信息了。

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

import (
    "fmt"
    "time"
)

func main() {
    // 加載時區(qū)
    loc, err := time.LoadLocation("Asia/Shanghai")
    if err != nil {
        fmt.Printf("load location failed, err:%v\n", err)
        return
    }
    // 按照指定時區(qū)和指定格式解析字符串時間
    timeObj, err := time.ParseInLocation("2006/01/02 15:04:05", "2020/01/01 00:00:00", loc)
    if err != nil {
        fmt.Printf("parse time failed, err:%v\n", err)
        return
    }
    fmt.Println(timeObj)
}

7. 時區(qū)轉(zhuǎn)換

func (t Time) In(loc *Location) Time
package main

import (
    "fmt"
    "time"
)

func main() {
    // 加載時區(qū)
    loc, _ := time.LoadLocation("Asia/Shanghai")
    // 按照指定時區(qū)和指定格式解析字符串時間
    timeObj, err := time.ParseInLocation("2006/01/02 15:04:05", "2020/01/01 00:00:00", loc)
    if err != nil {
        fmt.Printf("parse time failed, err:%v\n", err)
        return
    }
    fmt.Println(timeObj)
    // 按照東八區(qū)的時區(qū)和格式去解析字符串時間
    timeObj, err = time.Parse("2006/01/02 15:04:05", "2020/01/01 00:00:00")
    if err != nil {
        fmt.Printf("parse time failed, err:%v\n", err)
        return
    }
    fmt.Println(timeObj)
    // 將timeObj轉(zhuǎn)換到指定時區(qū)
    newTime := timeObj.In(loc)
    fmt.Println(newTime)
}

 總結(jié)

到此這篇關(guān)于Go時間操作常用方法的文章就介紹到這了,更多相關(guān)Go時間操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go條件控制語句詳解(if-else、switch和select)

    Go條件控制語句詳解(if-else、switch和select)

    條件語句用于檢查一個條件是否為真,并根據(jù)條件的真假來決定是否執(zhí)行相應(yīng)的代碼,下面這篇文章主要給大家介紹了關(guān)于Go條件控制語句(if-else、switch和select)的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Go Gin實(shí)現(xiàn)文件上傳下載的示例代碼

    Go Gin實(shí)現(xiàn)文件上傳下載的示例代碼

    這篇文章主要介紹了Go Gin實(shí)現(xiàn)文件上傳下載的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Go語言部署Kubernetes的實(shí)現(xiàn)示例

    Go語言部署Kubernetes的實(shí)現(xiàn)示例

    本文介紹了將Go應(yīng)用部署到Kubernetes的全過程,實(shí)現(xiàn)自動擴(kuò)展、滾動更新、健康檢查、監(jiān)控,并提供了最佳實(shí)踐和完整示例,具有一定的參考價值,感興趣的可以了解一下
    2026-05-05
  • Go reflect 反射原理示例詳解

    Go reflect 反射原理示例詳解

    這篇文章主要為大家介紹了Go reflect 反射原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Go語言Telnet回音服務(wù)器的實(shí)現(xiàn)

    Go語言Telnet回音服務(wù)器的實(shí)現(xiàn)

    這篇文章主要介紹了Go語言Telnet回音服務(wù)器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 一文徹底理解Golang閉包實(shí)現(xiàn)原理

    一文徹底理解Golang閉包實(shí)現(xiàn)原理

    閉包對于一個長期寫Java的開發(fā)者來說估計鮮有耳聞,光這名字感覺就有點(diǎn)"神秘莫測"。這篇文章的主要目的就是從編譯器的角度來分析閉包,徹底搞懂閉包的實(shí)現(xiàn)原理,需要的可以參考一下
    2022-10-10
  • 淺談Go語言中的接口類型

    淺談Go語言中的接口類型

    Go語言中接口是一種抽象的類型,本文主要介紹了淺談Go語言中的接口類型,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • 詳解Go語言strconv與其他基本數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的使用

    詳解Go語言strconv與其他基本數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的使用

    這篇文章將以 string 類型為中心,通過 strconv 標(biāo)準(zhǔn)庫,介紹其與其他基本數(shù)據(jù)類型相互轉(zhuǎn)換的函數(shù)。文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-12-12
  • Go使用Google?Gemini?Pro?API創(chuàng)建簡單聊天機(jī)器人

    Go使用Google?Gemini?Pro?API創(chuàng)建簡單聊天機(jī)器人

    這篇文章主要為大家介紹了Go使用Google?Gemini?Pro?API創(chuàng)建簡單聊天機(jī)器人實(shí)現(xiàn)過程詳解,本文將通過最新的gemini?go?sdk來實(shí)現(xiàn)命令行聊天機(jī)器人
    2023-12-12
  • Go語言按字節(jié)截取字符串的方法

    Go語言按字節(jié)截取字符串的方法

    這篇文章主要介紹了Go語言按字節(jié)截取字符串的方法,涉及Go語言操作字符串的技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-02-02

最新評論

松阳县| 满城县| 洛浦县| 丹凤县| 阳江市| 塔城市| 城步| 额尔古纳市| 南投市| 海城市| 高邑县| 大同县| 深州市| 万源市| 临湘市| 寿宁县| 谢通门县| 万源市| 福贡县| 电白县| 清徐县| 桃江县| 西贡区| 韶关市| 万年县| 新竹市| 邳州市| 汉中市| 通化县| 扎兰屯市| 芒康县| 乡城县| 张掖市| 广元市| 古田县| 申扎县| 慈溪市| 德令哈市| 海淀区| 台北县| 璧山县|