Go語言_時間篇

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

哎,先發下牢騷,Go文檔還是太弱了,特別是標準庫中的文檔說明,很多函數幾乎就一句話過了。這點確實該向Microsoft的MSDN好好學學。

 

Go的time包是標準庫中的包之一

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

http://golang.org/pkg/time/

 

先注意下Overview中的一句話:

The calendrical calculations always assume a Gregorian calendar.

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

http://baike.baidu.com/view/391054.htm

 

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

 

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是用來顯示和計算地區時間的。

 

下面從幾個需求直接看time的使用

1 請打出目前時間的時間戳記,然後將時間戳記格式為年月日時分秒的形式

package mainimport (    "fmt"    "time")func main() {    //時間戳記    t := time.Now().Unix()    fmt.Println(t)        //時間戳記到具體顯示的轉化    fmt.Println(time.Unix(t, 0).String())        //帶納秒的時間戳記    t = time.Now().UnixNano()    fmt.Println(t)    fmt.Println("------------------")        //基本格式化的時間表示    fmt.Println(time.Now().String())        fmt.Println(time.Now().Format("2006year 01month 02day"))}

顯示:

特別是Format這個函數,可以好好使用

2 輸出當前星期幾?

package mainimport (    "fmt"    "time")func main() {    //時間戳記    t := time.Now()    fmt.Println(t.Weekday().String())}

 

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

 

Weekday有一個String()方法

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

 

當一個結構中有定義String()函數的時候,fmt.Println()是會調用String的

例子如下:

package mainimport (    "fmt")type MyStruct struct{}func (d MyStruct)String() string {return "mystruct"}func main() {    me := new(MyStruct)    fmt.Println(me)}

 

Go的Time之旅結束!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.