国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Go語言time庫,時(shí)間和日期相關(guān)的操作方法

這篇具有很好參考價(jià)值的文章主要介紹了Go語言time庫,時(shí)間和日期相關(guān)的操作方法。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Go語言time庫,時(shí)間和日期相關(guān)的操作方法,Golang,golang,算法,開發(fā)語言

time庫

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

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

時(shí)間

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

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

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

日期

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

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

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

時(shí)區(qū)

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

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

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

函數(shù)

time.Now(): 返回當(dāng)前本地時(shí)間。
time.Parse(layout, str): 將字符串 str 解析為指定格式 layout 的時(shí)間。
time.Add(d time.Duration): 返回當(dāng)前時(shí)間加上給定時(shí)間間隔 d 的結(jié)果。
time.Sub(t, u time.Time): 返回時(shí)間 t 減去時(shí)間 u 的時(shí)間間隔。
time.Sub(t, u time.Time) time.Duration: 返回時(shí)間 t 減去時(shí)間 u 的時(shí)間間隔。
time.AddDate(years int, months int, days int) time.Time: 根據(jù)年、月、日的增量添加時(shí)間。
time.Since(t time.Time) time.Duration: 返回從 t 到現(xiàn)在的時(shí)間間隔。
time.Until(u time.Time) time.Duration: 返回從現(xiàn)在到 u 的時(shí)間間隔。
t.After(u):如果 t 在 u 之后,返回 true,否則返回 false。
t.Before(u):如果 t 在 u 之前,返回 true,否則返回 false。
time.Unix(sec int64, nanosec int64) time.Time: 將Unix時(shí)間戳轉(zhuǎn)換為時(shí)間對象。
time.ParseUnix(str string, layout string) (sec int64, nanosec int64,err error): 將時(shí)間字符串按照指定格式解析為Unix時(shí)間戳。
time.Set(sec int64, n int) time.Time: 將當(dāng)前時(shí)間設(shè)置為給定的秒數(shù)和納秒數(shù)。
time.Sleep(d Duration): 以讓程序在執(zhí)行過程中暫停一段時(shí)間。
time.Hour() int: 返回當(dāng)前小時(shí)的整數(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: 返回指定時(shí)間的本地時(shí)間對象。
time.isleap(year int) bool: 判斷給定的年份是否為閏年。
time.UnixNano() int64: 返回當(dāng)前時(shí)間的納秒值。
time.Duration() time.Duration: 返回從0時(shí)0分0秒到現(xiàn)在的納秒數(shù)。
time.ParseDuration(str string) (time.Duration, error): 將時(shí)間間隔字符串解析為時(shí)間間隔。
time.ParseInLocation(layout string, value string, loc *time.Location) (time.Time, error): 根據(jù)格式和時(shí)間值,解析時(shí)間,并指定時(shí)區(qū)。
time.Sunday: 返回星期幾的枚舉值,0為星期日,6為星期六,以此類推。
time.ParseDuration(str string) (time.Duration, error): 將時(shí)間間隔字符串解析為時(shí)間間隔。
time.Hour() time.Duration: 返回當(dāng)前小時(shí)的時(shí)間間隔。
time.Minute() time.Duration: 返回當(dāng)前分鐘的時(shí)間間隔。
time.Second() time.Duration: 返回當(dāng)前秒的時(shí)間間隔。
time.Nano() time.Duration: 返回當(dāng)前納秒的時(shí)間間隔。
time.ANSIC() string: 返回對應(yīng)于 ANSI C 的字符串表示的日期時(shí)間。
time.FixedZone(name string, offset int) *time.Location: 返回一個(gè)固定時(shí)區(qū)對象。
time.LoadLocation(name string) (*time.Location, error): 加載一個(gè)時(shí)區(qū)對象。
time.In(t time.Time, loc *time.Location) time.Time: 將時(shí)間 t 轉(zhuǎn)換為指定時(shí)區(qū)的時(shí)間。

類型

Time:表示時(shí)間點(diǎn),包括日期和時(shí)間。
Date:表示日期,包括年、月、日。
LocalTime:表示本地時(shí)間。
Location:表示時(shí)區(qū)。
ZeroTime:表示時(shí)間的零點(diǎn),即 1970 年 1 月 1 日 00:00:00 UTC。
Duration:它表示時(shí)間段,可以用納秒、微秒、毫秒、秒等為單位。

示例

代碼1

package main

import (
	"fmt"
	"time"
)

func main() {
	// 獲取當(dāng)前時(shí)間
	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()

	// 獲取指定日期的本地時(shí)間
	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)

	// 將時(shí)間字符串轉(zhuǎn)換為時(shí)間對象
	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)

	// 格式化時(shí)間對象為字符串
	format := "2006-01-02 15:04:05 MST"
	formattedTime := parsedTime.Format(format)
	fmt.Println("Formatted Time:", formattedTime)

	// 計(jì)算兩個(gè)時(shí)間之間的時(shí)間差
	t2 := time.Now()
	diff := t2.Sub(parsedTime)
	fmt.Println("Time Difference:", diff)

	// 將時(shí)間對象轉(zhuǎn)換為UTC時(shí)區(qū)
	utcTime := parsedTime.UTC()
	fmt.Println("UTC Time:", utcTime)

	// 將時(shí)間對象轉(zhuǎn)換為本地時(shí)區(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() {
	// 解析時(shí)間字符串為時(shí)間對象
	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("時(shí)間解析錯(cuò)誤:", err)
	}
	fmt.Println("解析后的時(shí)間:", t)

	// 時(shí)間加減
	d := time.Duration(24) * time.Hour
	t = t.Add(d)
	fmt.Println("加上一天的時(shí)間:", t)

	u := t.Add(-d)
	fmt.Println("減去一天的時(shí)間:", u)

	// 時(shí)間間隔
	diff := t.Sub(u)
	fmt.Println("加上一天和減去一天的時(shí)間間隔:", diff)

	// 時(shí)間格式化輸出
	layout = "2006-01-02"
	t = time.Now()
	formattedTime := t.Format(layout)
	fmt.Println("格式化后的時(shí)間:", formattedTime)

	// 時(shí)間轉(zhuǎn)換為Unix時(shí)間戳
	unixTime := t.Unix()
	fmt.Println("Unix時(shí)間戳:", unixTime)

	// 時(shí)間比較
	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))
}

輸出:

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


總結(jié)

本文介紹了Go語言中的time庫,包括時(shí)間、日期和時(shí)區(qū)等相關(guān)概念及使用方法。通過掌握這些知識,可以更好地處理時(shí)間、日期和時(shí)區(qū)相關(guān)的問題,提高開發(fā)效率。文章來源地址http://www.zghlxwxcb.cn/news/detail-622254.html

到了這里,關(guān)于Go語言time庫,時(shí)間和日期相關(guān)的操作方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL DTAETIME、TIMESTAMP、DATE、TIME、YEAR(日期和時(shí)間類型)

    MySQL 中有多處表示日期的數(shù)據(jù)類型: YEAR 、 TIME 、 DATE 、 DTAETIME 、 TIMESTAMP 。當(dāng)只記錄年信息的時(shí)候,可以只使用 YEAR 類型。 每一個(gè)類型都有合法的取值范圍,當(dāng)指定確定不合法的值時(shí),系統(tǒng)將“零”值插入數(shù)據(jù)庫中。 下表中列出了 MySQL 中的日期與時(shí)間類型。 類型名稱 日

    2023年04月14日
    瀏覽(28)
  • linux ls命令 --time-style選項(xiàng) 日期時(shí)間格式控制

    語法格式: s -l --time-style=xxx命令可以顯示時(shí)間的格式,xxx:full-iso, long-iso, iso, locale, +FORMAT, ls -l --time-style=full-iso 顯示全部時(shí)間,包括毫秒在內(nèi)如: drwxr-xr-x 2 boco boco 4096 2013-10-16 14:49:57.000000000 +0800 Deskt ls -l --time-style=long-iso 顯示日期和時(shí)間(包括年),以長格式顯示yyyy-mm-dd

    2024年02月14日
    瀏覽(16)
  • 19 Go的時(shí)間日期

    概述 ????????在上一節(jié)的內(nèi)容中,我們介紹了Go的Gob,包括:Gob簡介、Gob編碼、Gob解碼等。在本節(jié)中,我們將介紹Go的時(shí)間日期。Go語言提供了一套強(qiáng)大的時(shí)間日期處理庫,使得處理時(shí)間和日期變得簡單和高效。Go語言中處理日期和時(shí)間的常用方式是使用time包,這個(gè)包提供

    2024年02月05日
    瀏覽(22)
  • hutool日期工具類相關(guān):獲取某月所有周、某周的起止時(shí)間或所有日期、計(jì)算連續(xù)天數(shù)

    hutool日期工具類相關(guān):獲取某月所有周、某周的起止時(shí)間或所有日期、計(jì)算連續(xù)天數(shù)

    最近做項(xiàng)目,碰到一個(gè)比較復(fù)雜的日期查詢方式,在這里記錄一下,方便以后忘了隨時(shí)能查到。 像我們一般查詢?nèi)掌?,頁面上用的日期選擇器,一般都是直接查某一天或者選擇開始、結(jié)束時(shí)間,查一個(gè)范圍。不過這次需要我們按某月的某周來查詢,比如頁面上直接顯示這個(gè)月

    2024年02月02日
    瀏覽(153)
  • 前端中不同格式的日期相互轉(zhuǎn)換(字符串、時(shí)間戳)js相關(guān)

    前端中不同格式的日期相互轉(zhuǎn)換(字符串、時(shí)間戳)js相關(guān)

    在項(xiàng)目中遇到了,需要實(shí)現(xiàn)字符串和Unix時(shí)間戳的相互轉(zhuǎn)換,隨手記錄一下。 我使用的組件庫為Naive UI,涉及到的組件為日期選擇器(Date Picker)。作者在文檔中寫道: 實(shí)話說我不喜歡這個(gè) feature,因?yàn)槎鄶?shù)情況下,傳遞時(shí)間字符串不是個(gè)最佳實(shí)踐。但是現(xiàn)實(shí)世界是復(fù)雜的,我

    2024年02月02日
    瀏覽(28)
  • Golang:Go語言結(jié)構(gòu)

    在我們開始學(xué)習(xí) Go 編程語言的基礎(chǔ)構(gòu)建模塊前,讓我們先來了解 Go 語言最簡單程序的結(jié)構(gòu)。 Go 語言的基礎(chǔ)組成有以下幾個(gè)部分: 包聲明 引入包 函數(shù) 變量 語句 表達(dá)式 注釋 接下來讓我們來看下簡單的代碼,該代碼輸出了\\\"Hello World!\\\": 讓我們來看下以上程序的各個(gè)部分: 第一

    2024年02月10日
    瀏覽(21)
  • R語言 | 日期和時(shí)間的處理

    R語言 | 日期和時(shí)間的處理

    目錄 一、日期的設(shè)定與使用 1.1 as.Date()函數(shù) 1.2 weekdays()函數(shù) 1.3 months()函數(shù) 1.4 quarters()函數(shù) 1.5 Sys.localeconv()函數(shù) 1.6 Sys.Date()函數(shù) 1.7 再談seq()函數(shù) 1.8 使用不同格式表示日期 ?二、時(shí)間的設(shè)定與使用 2.1 Sys.time()函數(shù) 2.2 as.POSIXct()函數(shù) 2.3 時(shí)間也是可以做比較的 2.4? seq()函數(shù)與時(shí)間

    2024年02月02日
    瀏覽(16)
  • Go語言(Golang)數(shù)據(jù)庫編程

    要想連接到 SQL 數(shù)據(jù)庫,首先需要加載目標(biāo)數(shù)據(jù)庫的驅(qū)動(dòng),驅(qū)動(dòng)里面包含著于該數(shù)據(jù)庫交互的邏輯。 sql.Open() 數(shù)據(jù)庫驅(qū)動(dòng)的名稱 數(shù)據(jù)源名稱 得到一個(gè)指向 sql.DB 這個(gè) struct 的指針 sql.DB 是用來操作數(shù)據(jù)庫的,它代表了0個(gè)或者多個(gè)底層連接的池,這些連接由sql 包來維護(hù),sql 包會(huì)

    2024年02月03日
    瀏覽(93)
  • 【Golang】VScode配置Go語言環(huán)境

    【Golang】VScode配置Go語言環(huán)境

    安裝VScode請參考我的上一篇博客:VScode安裝_?548的博客-CSDN博客 接下來我們直接進(jìn)入正題: Go語言(又稱Golang)是一種開源的編程語言,由Google開發(fā)并于2009年首次發(fā)布。Go語言具有簡潔、高效、可靠和易于閱讀的特點(diǎn),被設(shè)計(jì)用于解決大型項(xiàng)目的開發(fā)需求。它結(jié)合了靜態(tài)類型

    2024年02月03日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包