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

Go語言Time包的具體使用

 更新時間:2024年07月24日 09:34:39   作者:CodeJR  
Go語言中有關于時間和日期的方法都在time包里面,本文主要介紹了Go語言Time包,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

time包

Go語言中有關于時間和日期的方法都在time包里面,Go語言的time包為開發(fā)者提供了一套全面而簡潔的工具來處理時間相關的操作。包括解析和格式化時間字符串,計算時間差和時區(qū)轉換等,time包時Go語言中處理時間和日期的核心組件。

時間類型(Time)

time包中的Time結構體表示的是時間類型,在Go語言中,我們可以使用time.Now()方法來獲取當前的時間,該方法返回的就是Time類型,調用Time類型的方法就可以分別獲取到當前時間的年月日時分秒等信息。

func main() {
 now := time.Now()

 fmt.Println(now) // 2024-07-23 19:36:03.4481196 +0800 CST m=+0.004232101

 fmt.Println(now.Year())   // 2024
 fmt.Println(now.Month())  // July
 fmt.Println(now.Day())    // 23
 fmt.Println(now.Hour())   // 19
 fmt.Println(now.Minute()) // 36
 fmt.Println(now.Second()) // 3
}

時間格式化

從上面的輸出可以看到當前日期的輸出后面還攜帶了有其他的消息,不是我們常用的格式,這個時候就可以使用Go語言的時間格式化功能,使用format方法并執(zhí)行格式化模板,Go語言的格式化模版并不是常用的Y-m-d H:M:S,而是2006-01-02 15:04:05,記憶方法:200612345(相傳這個時間為Go語言誕生時間,不知真假)。

func main() {
 now := time.Now()
 fmt.Println(now.Format("2006-01-02 15:04:05"))    // 2024-07-23 19:37:58
 fmt.Println(now.Format("2006-01-02 03:04:05 PM")) // 2024-07-23 07:41:20 PM
 fmt.Println(now.Format("2006/01/02 15:04"))       // 2024/07/23 19:40
 fmt.Println(now.Format("15:04 2006/01/02"))       // 19:40 2024/07/23
 fmt.Println(now.Format("2006/01/02"))             // 2024/07/23
}

除了自己寫格式化模版之外,Go語言已經內置了一部分模版可供選擇,模版在format包里面,可以直接使用,源碼如下:

const (
 Layout      = "01/02 03:04:05PM '06 -0700" // The reference time, in numerical order.
 ANSIC       = "Mon Jan _2 15:04:05 2006"
 UnixDate    = "Mon Jan _2 15:04:05 MST 2006"
 RubyDate    = "Mon Jan 02 15:04:05 -0700 2006"
 RFC822      = "02 Jan 06 15:04 MST"
 RFC822Z     = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
 RFC850      = "Monday, 02-Jan-06 15:04:05 MST"
 RFC1123     = "Mon, 02 Jan 2006 15:04:05 MST"
 RFC1123Z    = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
 RFC3339     = "2006-01-02T15:04:05Z07:00"
 RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
 Kitchen     = "3:04PM"
 // Handy time stamps.
 Stamp      = "Jan _2 15:04:05"
 StampMilli = "Jan _2 15:04:05.000"
 StampMicro = "Jan _2 15:04:05.000000"
 StampNano  = "Jan _2 15:04:05.000000000"
 DateTime   = "2006-01-02 15:04:05"
 DateOnly   = "2006-01-02"
 TimeOnly   = "15:04:05"
)

時間戳

時間戳是自1970年1月1日(08:00:00GMT)至當前時間的總毫秒數,也被稱為Unix時間戳,在Go語言里面,可以獲取四種級別的時間戳,分別是秒、毫秒、微秒和納秒。

func main() {
 now := time.Now()
 fmt.Println(now.Unix())      // 1721735188
 fmt.Println(now.UnixMilli()) // 1721735188504
 fmt.Println(now.UnixMicro()) // 1721735188504566
 fmt.Println(now.UnixNano())  // 1721735188504566800
}

時間間隔

在time包里面還定義了一個Duration類型,Duration表示時間間隔,例如可以直接使用time.Second表示1秒,time.Hour * 3表示3個小時,Duration源碼定義如下:

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

時間操作

在Go語言里面還可以非常簡單的進行時間的比較以及計算

時間計算

可以使用Add方法在當前時間的基礎上加上指定的時間間隔。

func main() {
 now := time.Now()
 fmt.Println(now)                    // 2024-07-23 19:52:14.0840934 +0800 CST m=+0.004981601
 fmt.Println(now.Add(time.Hour * 2)) // 2024-07-23 21:52:14.0840934 +0800 CST m=+7200.004981601
}

時間間隔

還可以使用Sub方法計算兩個時間之間相隔了多長時間,

func main() {
 now := time.Now()
 fmt.Println(now.Sub(now.Add(time.Hour * -2))) // 2h0m0s
}

之前

使用Before判斷一個時間是否在另一個時間之前

func main() {
 now := time.Now()
 fmt.Println(now.Before(now.Add(time.Hour))) // true
}

之后

使用After判斷一個時間是否在另一個時間之后

func main() {
 now := time.Now()
 fmt.Println(now.After(now.Add(time.Hour))) // false
}

相同

使用Equal判斷兩個時間是否相同

func main() {
 now := time.Now()
 fmt.Println(now.Equal(now.Add(time.Hour))) // false
}

時間轉換

字符串轉時間

func main() {
 timeStr := "2024-07-23 12:23:34"
 time1, _ := time.Parse(time.DateTime, timeStr)
 fmt.Println(time1) // 2024-07-23 12:23:34 +0000 UTC
 time2, _ := time.ParseInLocation(time.DateTime, timeStr, time.Local)
 fmt.Println(time2) // 2024-07-23 12:23:34 +0800 CST
}

可以使用Parse和ParseInLocation將字符串時間轉成Time類型的時間,兩者的區(qū)別如下:

  • time.Parse 總是將時間解析為 UTC 時區(qū)
  • time.ParseInLocation 允許指定一個時區(qū)解析

時間戳轉時間

func main() {
 time1 := time.Unix(1721735188, 0)
 time2 := time.UnixMilli(1721735188504)
 time3 := time.UnixMicro(1721735188504566)
 fmt.Println(time1) // 2024-07-23 19:46:28 +0800 CST
 fmt.Println(time2) // 2024-07-23 19:46:28.504 +0800 CST
 fmt.Println(time3) // 2024-07-23 19:46:28.504566 +0800 CST
}

使用time包的Unix、UnixMilli和UnixMicro可以分別將秒、毫秒、微秒級別的時間戳轉成相應的Time類型的時間。

到此這篇關于Go語言Time包的文章就介紹到這了,更多相關Go語言Time包內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解如何在Go服務中做鏈路追蹤

    詳解如何在Go服務中做鏈路追蹤

    使用 Go 語言開發(fā)微服務的時候,需要追蹤每一個請求的訪問鏈路,本文主要介紹了如何在Go 服務中做鏈路追蹤,感興趣的可以了解一下
    2021-09-09
  • 深入理解Go語言設計模式之函數式選項模式

    深入理解Go語言設計模式之函數式選項模式

    在 Go 語言中,函數選項模式(Function Options Pattern)是一種常見且強大的設計模式,用于構建可擴展、易于使用和靈活的 API,本文就來看看它的具體用法吧
    2023-05-05
  • 全面解析Go語言中crypto/sha1庫

    全面解析Go語言中crypto/sha1庫

    crypto/sha1在Go語言標準庫中是一個強大且實用的工具,適用于多種應用場景,本文就詳細的介紹了Go語言中crypto/sha1庫,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 使用go實現常見的數據結構

    使用go實現常見的數據結構

    這篇文章主要介紹了使用go實現常見的數據結構,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 用GO實現IP門禁優(yōu)化網絡流量管理

    用GO實現IP門禁優(yōu)化網絡流量管理

    這篇文章主要為大家介紹了用GO實現IP門禁優(yōu)化網絡流量管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Fedora14 Linux系統安裝Golang開發(fā)環(huán)境筆記

    Fedora14 Linux系統安裝Golang開發(fā)環(huán)境筆記

    這篇文章主要介紹了Fedora14 Linux系統安裝Golang開發(fā)環(huán)境筆記,本文講解了2種安裝方法,需要的朋友可以參考下
    2014-10-10
  • Go?語言開發(fā)環(huán)境搭建過程

    Go?語言開發(fā)環(huán)境搭建過程

    這篇文章主要介紹了Go?語言開發(fā)環(huán)境搭建過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • go打印%v %+v %#v的區(qū)別及說明

    go打印%v %+v %#v的區(qū)別及說明

    文章總結了Go語言中fmt包中%v、%+v和%#v格式化動詞的用法:%v只輸出值,%+v輸出字段名和值,%#v輸出結構體名和字段信息
    2025-12-12
  • Go語言中的逃逸分析究竟是什么?

    Go語言中的逃逸分析究竟是什么?

    這篇文章主要介紹了Go語言中的逃逸,套喲究竟是什么呢?通俗來講,當一個對象的指針被多個方法或線程引用時,我們稱這個指針發(fā)生了“逃逸”。下面文章將詳細介紹Go語言中的逃逸,需要的朋友可以參考一下
    2021-09-09
  • Apache?IoTDB開發(fā)系統之Go原生接口方法

    Apache?IoTDB開發(fā)系統之Go原生接口方法

    這篇文章主要為大家介紹了?Apache?IoTDB開發(fā)系統之Go原生接口方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09

最新評論

边坝县| 湖北省| 唐河县| 赤峰市| 辽宁省| 始兴县| 都昌县| 西乡县| 竹山县| 右玉县| 湖口县| 青海省| 揭西县| 昌江| 嵊州市| 阜康市| 博爱县| 太康县| 许昌县| 金乡县| 海安县| 枞阳县| 纳雍县| 济源市| 新干县| 容城县| 绥德县| 仙游县| 客服| 景泰县| 石棉县| 兴山县| 闸北区| 新河县| 浏阳市| 石城县| 崇信县| 海宁市| 岳阳县| 游戏| 泸水县|