go語言時間型別和時間戳

2021-09-01 12:17:19 字數 4214 閱讀 9661

獲取當地時間

fmt.

println

(time.

now())

fmt.

println

(time.

now().

local()

)fmt.

println

(time.

now().

utc())

fmt.

println

(time.

now().

location()

)

執行結果

2018-11

-2111:

50:39.540473

+0800 cst m=

+0.000311562

2018-11

-2111:

50:39.540628

+0800 cst

2018-11

-2103:

50:39.540632

+0000 utc

local

獲取時間的函式為time.now(),這裡加不加.local(),獲取的都是當地時間。

.utc得到的是0時區(也就是倫敦)的時間。

func now() time這個函式的返回值是time,也就是時間型別。

時間戳函式的返回值都是int64,是乙個大整數。

獲取時間戳

fmt.

println

(time.

now().

unix()

)fmt.

println

(time.

now().

local()

.unix()

)fmt.

println

(time.

now().

utc().

unix()

)fmt.

println

(time.

now().

unixnano()

)

執行結果

1542772752

1542772752

1542772752

1542772752846107000

這次,加不加.local().utc()結果都是一樣的。

那什麼是時間戳呢,時間戳就是

格林威治時間2023年01月01日00時00分00秒(北京時間2023年01月01日08時00分00秒)起到此時此刻的【總秒數】

那麼,在go語言中,time.now().unix()或者time.now().local().unix()就是【北京時間2023年01月01日08時00分00秒】到【北京時間此時此刻】的總秒數。

相應的time.now().utc().unix()就是【格林威治時間2023年01月01日00時00分00秒】到【格林威治時間此時此刻】的總秒數。

因此上面得到的幾個時間戳是一樣的

時間戳是乙個【總秒數】,所以時間戳函式的返回值都是int64。所以go語言中有時間型別,但並沒有乙個單獨的【時間戳型別】。

t := time.

now(

)str := t.

format

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

)str1 := t.

format

("2023年1月2日 15:04:05"

)fmt.

println

(t)fmt.

println

(str)

fmt.

println

(str1)

執行結果

2018-11

-2112:

48:19.870047

+0800 cst m=

+0.000503740

2018-11

-2112:

48:192023年11月21日 12:48

:19

第一行是time.now()的結果,是時間型別【time

下面兩行是t.format()的結果,是字串。

t := time.

now(

)str := t.

format

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

)str1 := t.

format

("2023年1月2日 15:04:05"

)timestamp,

_:= time.

parse

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

, str)

timestamp1,

_:= time.

parse

("2023年1月2日 15:04:05"

, str1)

fmt.

println

(timestamp)

fmt.

println

(timestamp1)

執行結果

2018-11

-2112:

48:19+

0000 utc

2018-11

-2112:

48:19+

0000 utc

函式func parse(layout, value string) (time, error)的第乙個引數是需要轉換的字串的格式,第二個引數是需要轉換的字串。返回值是時間型別和乙個err。

【注意】

在將字串轉為時間型別的時候,是直接轉為了【倫敦時間】,go語言並不會去判斷這個字串表示的是北京時間,還是倫敦時間,因為沒法判斷,只有你知道它表示的是**的時間。比如16:08:05在中國那當然表示的是北京時間,但是如果把這個字串轉為時間型別,就直接變成倫敦時間的16:08:05了。

直接呼叫方法func (t time) unix() int64即可。

將上面的兩個時間變數timestamptimestamp1轉為時間戳

fmt.

println

(timestamp.

unix()

)fmt.

println

(timestamp1.

unix()

)

執行結果

1542804499

1542804499

用函式func unix(sec int64, nsec int64) time進行轉換,第乙個引數是秒,第二個引數是納秒,會被加到結果的小數點後面。

tmsp := time.

now().

unix()

fmt.

println

(tmsp)

t1 := time.

unix

(tmsp,0)

.utc()

t2 := time.

unix

(tmsp, tmsp)

.local()

fmt.

println

(t1)

fmt.

println

(t2)

執行結果

1542779708

2018-11

-2105:

55:08+

0000 utc

2018-11

-2113:

55:09.542779708

+0800 cst

這裡的轉換可以選擇是轉換為當地時間還是倫敦時間。

Go語言 時間與時間戳的獲取和轉換

csdn部落格 需要 import time 包 獲取當前時間戳,單位s,列印結果 1491888244 timeunix time.now unix 獲取當前時間戳,單位納秒,列印結果 1491888244752784461 timeunixnano time.now unixnano 獲取指定時...

日期型別轉換時間戳及時間戳轉時間型別

日期轉時間戳 public static long datetimetounixtimestamp datetime datetime 時間戳轉日期 public static datetime todatetime this string timestamp datetime datetimest...

時間戳與時間型別轉化 秒級時間戳

注意 本文秒級時間戳的轉化,日期時間戳轉化可檢視 1 當前時間日期轉時間戳 import datetime import time now datetime.datetime.now print now print now.timetuple time stamp time.mktime now.t...