在不少種語言中都有和時間相關的模塊,在python和golang中內置的模塊名稱都是叫time模塊,只不過用法略有區別,如在python下打印當前時間是time.time,在golang下則使用的time.now(二者的輸出也略有區別的,前者輸的是unix time,後者輸出的是經常使用識別的日期時間)。golang裏不過還有一點比較特殊的就是其是以2006-01-02 15:04:05時間點做爲基準的(簡稱612345或12345 2006),這點就相似於unix時間戳是以1970年1月1日爲開始經歷過的秒數同樣。本篇就簡單的總結下經常使用的time模塊的用法。html
1、time的經常使用示例python
打印當前時間戳linux
fmt.Println(time.Now().Unix()) # 1389058332
str格式化時間golang
fmt.Println(time.Now().Format("2006-01-02 15:04:05")) # 這是個奇葩,必須是這個時間點, 聽說是go誕生之日, 記憶方法:6-1-2-3-4-5 # 2018-08-25 09:42:20
時間戳轉str格式化時間windows
str_time := time.Unix(1389058332, 0).Format("2006-01-02 15:04:05") fmt.Println(str_time)
WAR包spa
the_time := time.Date(2014, 1, 7, 5, 50, 4, 0, time.Local) unix_time := the_time.Unix() fmt.Println(unix_time) # 1389045004
time.Parse格式化時間unix
the_time, err := time.Parse("2006-01-02 15:04:05", "2014-01-08 09:04:41") if err == nil { unix_time := the_time.Unix() fmt.Println(unix_time) } # 1389171881
2、time.Parse和time.Format的區別orm
在windows下,time.Parse()的時區和time.Format()的時區是一致的。可是在linux環境下,time.Parse()的默認時區是UTC(與咱們使用的標準時間CST相差8個小時),time.Format()的時區默認是本地,二者若是不處理好就會致使錯誤。具體能夠作以下一個操做,找一臺linux主機,將其/etc/localtime由Shanghai更換爲UTC,而後分別執行以下代碼,看下輸出的區別:htm
package main import "time" import "fmt" func main(){ t, err := time.Parse("2006-01-02 15:04:05", "2017-12-03 22:01:02") //localTime, err := time.ParseInLocation("2006-01-02 15:04:05", "2017-12-03 22:01:02", time.Local) if err != nil{ fmt.Println(err) return } fmt.Println(t) fmt.Println(time.Now()) fmt.Println(time.Now().Sub(t).Seconds()) }
分別使用time.Parse和time.ParseInLocation分別算下兩個時間之間的差值,看下哪個求出的值是正確的?get
3、再一個示例
最後再給出一個輸出當前時間年、月、日、時等不一樣信息的示例代碼,以下:
package main import( "fmt" "time" ) func main(){ t := time.Now() y,m,d := t.Date() today := time.Now().Format("2006-01-02") datetime := time.Now().Format("2006-01-02 15:04:05")//後面的參數是固定的 不然將沒法正常輸出 fmt.Println("time is : ",t ) fmt.Println("y m d is : ",y,m,d ) fmt.Println("now is :",today) fmt.Println("now is :",datetime) }