天天看點

Go語言_時間篇Go的time包是标準庫中的包之一下面從幾個需求直接看time的使用

哎,先發下牢騷,go文檔還是太弱了,特别是标準庫中的文檔說明,很多函數幾乎就一句話過了。這點确實該向microsoft的msdn好好學學。

不用說,幾乎是開發必須用到的包之一。time包的說明文檔在:

<a href="http://golang.org/pkg/time/">http://golang.org/pkg/time/</a>

先注意下overview中的一句話:

the calendrical calculations always assume a gregorian calendar.

這個包的時間計算式是基于格裡曆,就是我們使用的公曆。關于格裡曆的曆史,可以看百度百科:

<a href="http://baike.baidu.com/view/391054.htm">http://baike.baidu.com/view/391054.htm</a>

看看godoc文檔,最大的資料類型就是time了,這個time類型最微小可以表示到nanosecond(微毫秒,十億份之一秒)。

Go語言_時間篇Go的time包是标準庫中的包之一下面從幾個需求直接看time的使用

time的比較是使用before,after和equal方法。看一眼after:

func (t time) after(u time) bool

很好,傳回的是bool類型,是我們所需要的。

sub方法傳回的是兩個時間點之間的時間距離,看上圖看到它傳回的是duration結構,這個結構的具體類型和操作也在godoc中

add方法和sub方法是相反的,擷取t0和t1的時間距離d是使用sub,将t0加d擷取t1就是使用add方法

iszero方法:time的zero時間點是january 1, year 1, 00:00:00 utc,這個函數判斷一個時間是否是zero時間點

local,utc,ln是用來顯示和計算地區時間的。

顯示:

Go語言_時間篇Go的time包是标準庫中的包之一下面從幾個需求直接看time的使用

特别是format這個函數,可以好好使用

Go語言_時間篇Go的time包是标準庫中的包之一下面從幾個需求直接看time的使用

文檔中對這個weekday類型就沒有說明!!沒法,直接看代碼可以看到:

Go語言_時間篇Go的time包是标準庫中的包之一下面從幾個需求直接看time的使用

weekday有一個string()方法

好了,看到這裡外帶我們有一個推測:

例子如下:

Go語言_時間篇Go的time包是标準庫中的包之一下面從幾個需求直接看time的使用

go的time之旅結束!!