GoLang 的時間處理
最近學習GoLang的time包,其實學習Go只是為了業余時間可以放松下。對于我這個小菜來說沒有體會出Go卓越的方面對我自己的工作有什么影響,因為我是PHP程序員出生,很多都是別人封裝好的代碼,自己也不了解底層。只會用所以講time包也是在應用的基礎上面。
廢話不多說上干貨:
<?php $str = date("Y-m-d H:i:s"); echo $str;//2014-01-02 23:20:00 ?>
相信熟悉PHP的讀者應該知道這個東西就是獲取當前時間的一個輸出。
在Go語言中,可能很多PHPer并不能適應,因為在PHP中已經幫我們在拓展庫中引入了時間相關處理函數,所以我們直接調用沒有問題,但是在Go語言中,需要我們手動引入一個time的包
package mainimport ( "fmt" "time" )
func main() { t := time.Now()//獲取當前時間的結構體 fmt.Println(t.Format("2006-01-02 15:04:05"))//格式化輸出 }</pre>
初次用的使用者會很納悶,我獲取當前的時間,為什么還要寫2006-01-02 15:04:05這個東西,因為作者想咱們飲水思源呀。記住這個時候就是Go語言誕生的時候,把這個作為時間格式讓我們自己選擇,當然更多格式方面的東西在time的format.go介紹,我由于只是拋磚引玉就不多做詳解。
這個時候有人會問,我是PHPer我要時間戳,你怎么給我時間戳?大神想事情肯定比我們周全。看招:
package mainimport ( "fmt" "time" )
func main() { t := time.Date(2014, 1, 2, 0, 0, 0, 0, time.Local) fmt.Println(t.Unix()) }</pre>
時間戳這不就出來了嘛。這個時候PHPer會想了,獲取個時間戳寫那么麻煩,還沒有我直接用PHP爽呢。真挑剔啊。又要性能還要代碼好寫,程序員工資可以白拿了。來個時間比較的例子吧。我們在PHP中比較時間大小可能還要轉個時間戳自己封裝一個函數什么的。但是Golang Time包的作者玩時間肯定不是我們所能披靡的。來個時間比較的例子讓你們感受下
package mainimport ( "fmt" "time" )
func main() { t := time.Date(2014, 1, 2, 0, 0, 0, 0, time.Local) b := time.Date(1999, 1, 1, 8, 0, 0, 0, time.Local) fmt.Println(t.Before(b))//t的時間在b之前? 明顯答案是false fmt.Println(t.After(b))//t的時間在b之后? 明顯答案是true }</pre>
忘記咱們的PHPer時間戳比大小的邏輯判斷吧,用語言表達。當然不是黑PHP表達不清楚,會封裝函數的PHPer自己都知道要怎么實現一些方法來讓自己的代碼可讀性高。以后我的代碼也可能參考這個Go來封裝,而且還能死規定自己的時間原點。例如生日,讓使用封裝包的家伙記住我的生日什么的。
哈哈,扯遠了,學習一門新語言就是用他了,然后優點借鑒過來讓自己的代碼更加好讀。希望比我更加了解time包的高人,多多留言,我也想更加了解多點Go在時間處理上面先進的東西。
來自:http://my.oschina.net/alexskywinner/blog/189693