Go語言time包用法總結

2021-10-07 08:16:59 字數 3852 閱讀 9101

在go語言中時間型別不是關鍵字而是使用time包下time結構體

time 包提供了時間的顯示和計量用的功能。日曆的計算採用的是公曆

時間型別預設顯示為utc,所以經常需要把時間型別轉換為字串,顯示成我們所熟悉的格式

代表乙個地區,並表示該地區所在的時區(可能多個)。location通常代表地理位置的偏移,比如 gmt東八區

time包提供了 location 的兩個例項:localutclocal代表當前系統本地時區;utc代表通用協調時間,也就是零時區。time包預設(為顯示提供時區)使用utc時區。

代表乙個納秒精度的時間點,是公曆時間,在程式中應使用 time 型別值來儲存和傳遞時間,而不是指標。time.time

時間點可以使用 before、after 和 equal 方法進行比較。

sub 方法讓兩個時間點相減,生成乙個 duration 型別值(代表時間間隔)。

add 方法給乙個時間點加上乙個時間段,生成乙個新的 time 型別時間點。

每乙個 time 都具有乙個地點資訊(即對應地點的時區資訊),當計算時間的表示格式時,如 format、hour 和 year 等方法,都會考慮該資訊。

通過==比較 time 時,location 資訊也會參與比較,因此 time 不應該作為 map 的 key。

type time
代表兩個時間點之間的時間(時間間隔),以納秒為單位,克表示最長時間差大約為290年,如果兩個時間點差大於290年,也會返回290年minduration(-1<<63)或maxduration(1<<63-1)

定時器相關型別

這兩個型別的原始型別都是 int,定義它們,語義更明確,同時,實現fmt.stringer介面,方便輸出。

func

main()

t := time.

now(

) fmt.

println

(t)//輸出:年-月-日 小時:分鐘:秒.納秒 +0800 cst m=+0.003012301

/*

1秒(s)=1000毫秒(ms)

1秒(s)=1000000微秒(μs)

1秒(s)=1000000000納秒(ns)

*/t := time.

now(

) t1 := time.

unix(0

, t.

unixnano()

)//根據時間戳建立時間.第二個值[0, 999999999]外合法

fmt.

println

(t.string()

) fmt.

println

(t1)

取到本地時間位置物件,東八區

t := time.

date

(2020,5

,6,7

,8,9

,0, time.local)

fmt.

println

(t)//輸出:2020-05-06 07:08:09 +0800 cst

t := time.

now(

) fmt.

println

(t)//2020-06-19 10:55:48.898689 +0800 cst m=+0.000091282

fmt.

println

(t.year()

)//年

fmt.

println

(int

(t.month()

))//月 fmt.

println

(t.day()

)//日

fmt.

println

(t.date()

)//三個引數,分別是:年,月,日

fmt.

println

(t.hour()

)//小時

fmt.

println

(t.minute()

)//分鐘

fmt.

println

(t.second()

)//秒

fmt.

println

(t.clock()

)//三個引數,分別是:小時,分鐘,秒

fmt.

println

(t.nanosecond()

)//納秒

fmt.

println

(t.unix()

)//秒差

fmt.

println

(t.unixnano()

)//時間戳

t := time.

now(

)//引數必須是這個時間,格式任意

s := t.

format

("2006-01-02 15:04:05"

) fmt.

println

(s)

s:=

"2022-02-04 22:02:04"

t,err:=time.

parseinlocation

("2006-01-02 15:04:05"

,s,time.local)

fmt.

println

(t,err)

t,

_:= time.

parseinlocation

("2006-01-02 15:04:05"

,"2020-06-13 11:34:39"

, time.local)

// 整點(向下取整)

fmt.

println

(t.truncate(1

* time.hour)

)//2020-06-13 11:00:00 +0800 cst

// 整點(最接近)

fmt.

println

(t.round(1

* time.hour)

)//2020-06-13 12:00:00 +0800 cst

// 整分(向下取整)

fmt.

println

(t.truncate(1

* time.minute)

)//2020-06-13 11:34:00 +0800 cst

// 整分(最接近)

fmt.

println

(t.round(1

* time.minute)

)//2020-06-13 11:35:00 +0800 cst

t2,_

:= time.

parseinlocation

("2006-01-02 15:04:05"

, t.

format

("2006-01-02 15:00:00"

), time.local)

fmt.

println

(t2)

//2020-06-13 11:00:00 +0800 cst

go語言基礎 時間time包

time包下有很多跟時間有關係的方法,以前我們介紹的隨機數就是利用了time包下的乙個方法,接下來我再來介紹一些常用方法 日期和時間 now time,獲取當前的日期 date time,獲取指定的日期 time string,string time 格式化列印當前時間,要按照go語言特定的格式輸入...

Go語言基礎之time包

時間和日期是我們程式設計中經常會用到的,本文主要介紹了go語言內建的time包的基本用法。go語言中使用import關鍵字匯入包,包的名字使用雙引號 包裹起來。import time import fmt 匯入多個包時可以使用圓括號,包名的順序不影響匯入效果,例如 import fmt time 需...

Go語言基礎之time包

時間和日期是我們程式設計中經常會用到的,本文主要介紹了go語言內建的time包的基本用法。時間型別 time包提供了時間的顯示和測量用的函式。日曆的計算採用的是公曆。time.time型別表示時間。我們可以通過time.now 函式獲取當前的時間物件,然後獲取時間物件的年月日時分秒等資訊。示例 如下...