在go語言中時間型別不是關鍵字而是使用time包下time結構體代表乙個地區,並表示該地區所在的時區(可能多個)。time 包提供了時間的顯示和計量用的功能。日曆的計算採用的是公曆
時間型別預設顯示為utc,所以經常需要把時間型別轉換為字串,顯示成我們所熟悉的格式
location
通常代表地理位置的偏移,比如 gmt東八區
time
包提供了 location 的兩個例項:local
和utc
。local
代表當前系統本地時區;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 函式獲取當前的時間物件,然後獲取時間物件的年月日時分秒等資訊。示例 如下...