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

Go Time庫中時間和日期相關(guān)的操作方法整理

 更新時間:2023年08月02日 09:07:32   作者:Hann Yang  
這篇文章主要為大家整理了Go語言中的time庫,包括時間、日期和時區(qū)等相關(guān)概念及使用方法,希望通過掌握這些知識,大家可以更好地處理時間、日期和時區(qū)相關(guān)的問題

time庫

用于處理時間、日期和時區(qū)的核心庫。在實(shí)際開發(fā)中,常常需要與時間打交道,例如記錄日志、處理時間差、計(jì)算時間間隔等等。因此,掌握time庫的使用方法對于Go開發(fā)者來說非常重要。

在Go語言中,時間表示為time.Time類型,日期表示為time.Time類型或者time.Date類型,時區(qū)表示為time.Location類型。下面將詳細(xì)介紹這些類型的概念及使用方法。

時間

在Go語言中,時間表示為time.Time類型。time.Time類型是一個結(jié)構(gòu)體,包含兩個字段:一個具有 century 和 second 等字段的大整數(shù)和一個小整數(shù),分別表示時間的年份和時間的小數(shù)部分。

可以使用time包中的函數(shù)來獲取當(dāng)前時間、指定時間或者進(jìn)行時間的加減操作。下面是一些常用的時間操作函數(shù):

  • time.Now():返回當(dāng)前本地時間
  • time.Parse(layout, str):將字符串str解析為指定格式layout的時間
  • time.Add(d time.Duration):返回當(dāng)前時間加上給定時間間隔d的結(jié)果
  • time.Sub(t, u time.Time):返回時間t減去時間u的時間間隔

日期

日期表示為time.Time類型或者time.Date類型。其中,time.Time類型表示完整的的時間,包括時分秒等信息;而time.Date類型則只表示日期部分,不包含時間部分。

可以使用time包中的函數(shù)來獲取指定日期的月份和日數(shù),或者進(jìn)行日期的加減操作。下面是一些常用的日期操作函數(shù):

  • time.Month(month int):返回指定的月份的字符串表示
  • time.Day():返回當(dāng)前日期中的天數(shù)
  • time.AddDate(year int, month int, day int):返回指定年月日加上給定時間間隔的結(jié)果
  • time.Sub(t, u time.Time):返回時間t減去時間u的時間間隔

時區(qū)

時區(qū)表示為time.Location類型。time.Location類型是一個結(jié)構(gòu)體,包含一個字符串表示時區(qū)的標(biāo)識符和一些字段,例如seconds 和 bias 等。

可以使用time包中的函數(shù)來獲取指定時區(qū)的偏移量或者進(jìn)行時區(qū)的轉(zhuǎn)換。下面是一些常用的時區(qū)操作函數(shù):

  • time.Local:表示本地時區(qū)
  • time.UTC:表示UTC時區(qū)
  • time.LoadLocation(name string):返回指定時區(qū)名稱的time.Location類型對象
  • time.In(loc time.Location, t time.Time):返回指定時區(qū)的時間t轉(zhuǎn)換為目標(biāo)時區(qū)loc的結(jié)果

函數(shù)

time.Now(): 返回當(dāng)前本地時間。

time.Parse(layout, str): 將字符串 str 解析為指定格式 layout 的時間。

time.Add(d time.Duration): 返回當(dāng)前時間加上給定時間間隔 d 的結(jié)果。

time.Sub(t, u time.Time): 返回時間 t 減去時間 u 的時間間隔。

time.Sub(t, u time.Time) time.Duration: 返回時間 t 減去時間 u 的時間間隔。

time.AddDate(years int, months int, days int) time.Time: 根據(jù)年、月、日的增量添加時間。

time.Since(t time.Time) time.Duration: 返回從 t 到現(xiàn)在的時間間隔。

time.Until(u time.Time) time.Duration: 返回從現(xiàn)在到 u 的時間間隔。

t.After(u):如果 t 在 u 之后,返回 true,否則返回 false。

t.Before(u):如果 t 在 u 之前,返回 true,否則返回 false。

time.Unix(sec int64, nanosec int64) time.Time: 將Unix時間戳轉(zhuǎn)換為時間對象。

time.ParseUnix(str string, layout string) (sec int64, nanosec int64,err error): 將時間字符串按照指定格式解析為Unix時間戳。

time.Set(sec int64, n int) time.Time: 將當(dāng)前時間設(shè)置為給定的秒數(shù)和納秒數(shù)。

time.Sleep(d Duration): 以讓程序在執(zhí)行過程中暫停一段時間。

time.Hour() int: 返回當(dāng)前小時的整數(shù)值。

time.Minute() int: 返回當(dāng)前分鐘的整數(shù)值。

time.Second() int: 返回當(dāng)前秒的整數(shù)值。

time.Nanosecond() int: 返回當(dāng)前納秒的整數(shù)值。

time.Weekday() time.Weekday: 返回當(dāng)前星期幾的枚舉值。

time.Day(): 返回當(dāng)前日期的日數(shù)。

time.Month() time.Month: 返回當(dāng)前月份的枚舉值。

time.Year() int: 返回當(dāng)前年份的整數(shù)值。

time.Date(year int, month time.Month, day, hour, min, sec, nanosec int, loc *time.Location) time.Time: 返回指定時間的本地時間對象。

time.isleap(year int) bool: 判斷給定的年份是否為閏年。

time.UnixNano() int64: 返回當(dāng)前時間的納秒值。

time.Duration() time.Duration: 返回從0時0分0秒到現(xiàn)在的納秒數(shù)。

time.ParseDuration(str string) (time.Duration, error): 將時間間隔字符串解析為時間間隔。

time.ParseInLocation(layout string, value string, loc *time.Location) (time.Time, error): 根據(jù)格式和時間值,解析時間,并指定時區(qū)。

time.StartOfDay(): 返回當(dāng)前日期的開始時間。

time.EndOfDay(): 返回當(dāng)前日期的結(jié)束時間。

time.StartOfWeek(): 返回當(dāng)前日期所在周的周一。

time.EndOfWeek(): 返回當(dāng)前日期所在周的周日。

time.StartOfMonth(): 返回當(dāng)前月份的開始時間。

time.EndOfMonth(): 返回當(dāng)前月份的結(jié)束時間。

time.StartOfYear(): 返回當(dāng)前年份的開始時間。

time.EndOfYear(): 返回當(dāng)前年份的結(jié)束時間。

time.Sunday: 返回星期幾的枚舉值,0為星期日,6為星期六,以此類推。

time.ParseDuration(str string) (time.Duration, error): 將時間間隔字符串解析為時間間隔。

time.Hour() time.Duration: 返回當(dāng)前小時的時間間隔。

time.Minute() time.Duration: 返回當(dāng)前分鐘的時間間隔。

time.Second() time.Duration: 返回當(dāng)前秒的時間間隔。

time.Nano() time.Duration: 返回當(dāng)前納秒的時間間隔。

time.ANSIC() string: 返回對應(yīng)于 ANSI C 的字符串表示的日期時間。

time.FixedZone(name string, offset int) *time.Location: 返回一個固定時區(qū)對象。

time.LoadLocation(name string) (*time.Location, error): 加載一個時區(qū)對象。

time.In(t time.Time, loc *time.Location) time.Time: 將時間 t 轉(zhuǎn)換為指定時區(qū)的時間。

類型

Time:表示時間點(diǎn),包括日期和時間。

Date:表示日期,包括年、月、日。

LocalTime:表示本地時間。

Location:表示時區(qū)。

ZeroTime:表示時間的零點(diǎn),即 1970 年 1 月 1 日 00:00:00 UTC。

Duration:它表示時間段,可以用納秒、微秒、毫秒、秒等為單位。

示例

代碼1

package main
import (
    "fmt"
    "time"
)
func main() {
    // 獲取當(dāng)前時間
    currentTime := time.Now()
    fmt.Println("Current Time:", currentTime)
    // 暫停程序執(zhí)行 5 秒鐘
    fmt.Print("Waiting for 5 seconds: ")
    for i := 0; i < 5; i += 1 {
        time.Sleep(time.Second)
        fmt.Print(".")
    }
    fmt.Println()
    // 獲取指定日期的本地時間
    year := 2023
    month := time.March
    day := 17
    hour := 0
    minute := 0
    second := 0
    nano := 0
    loc := &time.Location{}
    date := time.Date(year, month, day, hour, minute, second, nano, loc)
    fmt.Println("Date:", date)
    // 將時間字符串轉(zhuǎn)換為時間對象
    layout := "2006-01-02 15:04:05"
    value := "2023-03-23 08:30:00"
    parsedTime, err := time.Parse(layout, value)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    fmt.Println("Parsed Time:", parsedTime)
    // 格式化時間對象為字符串
    format := "2006-01-02 15:04:05 MST"
    formattedTime := parsedTime.Format(format)
    fmt.Println("Formatted Time:", formattedTime)
    // 計(jì)算兩個時間之間的時間差
    t2 := time.Now()
    diff := t2.Sub(parsedTime)
    fmt.Println("Time Difference:", diff)
    // 將時間對象轉(zhuǎn)換為UTC時區(qū)
    utcTime := parsedTime.UTC()
    fmt.Println("UTC Time:", utcTime)
    // 將時間對象轉(zhuǎn)換為本地時區(qū)
    localTime := parsedTime.In(time.Local)
    fmt.Println("Local Time:", localTime)
}

輸出:

Current Time: 2023-08-01 20:15:11.0034059 +0800 CST
Waiting for 5 seconds: .....
Date: 2023-03-17 00:00:00 +0000 UTC
Parsed Time: 2023-03-23 08:30:00 +0000 UTC
Formatted Time: 2023-03-23 08:30:00 UTC
Time Difference: 3147h45m16.0065551s
UTC Time: 2023-03-23 08:30:00 +0000 UTC
Local Time: 2023-03-23 16:30:00 +0800 CST

代碼2

package main
import (
    "fmt"
    "time"
)
func main() {
    // 解析時間字符串為時間對象
    layout := "2006-01-02 15:04:05"
    strTime := "2023-03-23 12:30:00"
    t, err := time.Parse(layout, strTime)
    if err != nil {
        fmt.Println("時間解析錯誤:", err)
    }
    fmt.Println("解析后的時間:", t)
    // 時間加減
    d := time.Duration(24) * time.Hour
    t = t.Add(d)
    fmt.Println("加上一天的時間:", t)
    u := t.Add(-d)
    fmt.Println("減去一天的時間:", u)
    // 時間間隔
    diff := t.Sub(u)
    fmt.Println("加上一天和減去一天的時間間隔:", diff)
    // 時間格式化輸出
    layout = "2006-01-02"
    t = time.Now()
    formattedTime := t.Format(layout)
    fmt.Println("格式化后的時間:", formattedTime)
    // 時間轉(zhuǎn)換為Unix時間戳
    unixTime := t.Unix()
    fmt.Println("Unix時間戳:", unixTime)
    // 時間比較
    t1 := time.Now()
    t2 := t1.Add(time.Hour)
    diff = t2.Sub(t1)
    fmt.Println("t2 - t1 =", diff)
    fmt.Println("t1 < t2:", t1.Before(t2))
    fmt.Println("t2 > t1:", t2.After(t1))
}

輸出:

解析后的時間: 2023-03-23 12:30:00 +0000 UTC
加上一天的時間: 2023-03-24 12:30:00 +0000 UTC
減去一天的時間: 2023-03-23 12:30:00 +0000 UTC
加上一天和減去一天的時間間隔: 24h0m0s
格式化后的時間: 2023-08-01
Unix時間戳: 1690892235
t2 - t1 = 1h0m0s
t1 < t2: true
t2 > t1: true

總結(jié)

本文介紹了Go語言中的time庫,包括時間、日期和時區(qū)等相關(guān)概念及使用方法。通過掌握這些知識,可以更好地處理時間、日期和時區(qū)相關(guān)的問題,提高開發(fā)效率。

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

相關(guān)文章

  • 淺析Go中fasthttp與net/http的性能對比及應(yīng)用

    淺析Go中fasthttp與net/http的性能對比及應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Golang中fasthttp的底層實(shí)現(xiàn)以及與net/http的區(qū)別,下面就跟隨小編一起來看看fasthttp到底是如何做到性能如此之快的吧
    2024-03-03
  • golang接口的正確用法分享

    golang接口的正確用法分享

    這篇文章主要介紹了golang接口的正確用法分享的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • golang實(shí)現(xiàn)http server提供文件下載功能

    golang實(shí)現(xiàn)http server提供文件下載功能

    這篇文章主要介紹了golang實(shí)現(xiàn)http server提供文件下載功能,本文給大家簡單介紹了Golang的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • 深入理解golang chan的使用

    深入理解golang chan的使用

    本文主要介紹了golang chan的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Golang中函數(shù)(Function)和方法(Method)的區(qū)別詳解

    Golang中函數(shù)(Function)和方法(Method)的區(qū)別詳解

    在Golang中,大家必然會頻繁使用到函數(shù)(Function)和方法(Method),但是有的同學(xué)可能并沒有注意過函數(shù)和方法的異同點(diǎn),函數(shù)和方法都是用來執(zhí)行特定任務(wù)的代碼塊,雖然很相似,但也有很大的區(qū)別,所以本文將詳細(xì)講解函數(shù)和方法的定義以及它們的異同點(diǎn)
    2023-07-07
  • Go和Java算法詳析之分?jǐn)?shù)到小數(shù)

    Go和Java算法詳析之分?jǐn)?shù)到小數(shù)

    這篇文章主要給大家介紹了關(guān)于Go和Java算法詳析之分?jǐn)?shù)到小數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-08-08
  • 詳解minio分布式文件存儲

    詳解minio分布式文件存儲

    MinIO 是一款基于 Go 語言的高性能、可擴(kuò)展、云原生支持、操作簡單、開源的分布式對象存儲產(chǎn)品,這篇文章主要介紹了minio分布式文件存儲,需要的朋友可以參考下
    2023-10-10
  • 深度剖析Golang如何實(shí)現(xiàn)GC掃描對象

    深度剖析Golang如何實(shí)現(xiàn)GC掃描對象

    這篇文章主要為大家詳細(xì)介紹了Golang是如何實(shí)現(xiàn)GC掃描對象的,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,需要的小伙伴可以參考一下
    2023-03-03
  • 深入理解Go語言的容器包

    深入理解Go語言的容器包

    Go語言的container標(biāo)準(zhǔn)包包含了堆(heap)、鏈表(list)和環(huán)(ring)三種數(shù)據(jù)結(jié)構(gòu),本文就來詳細(xì)的介紹一下這三種的使用,感興趣的可以了解一下
    2024-10-10
  • Go Module常用命令及如何使用Go Module

    Go Module常用命令及如何使用Go Module

    go module是go官方自帶的go依賴管理庫,在1.13版本正式推薦使用,這篇文章主要介紹了Go Module常用命令及如何使用Go Module,需要的朋友可以參考下
    2024-02-02

最新評論