GoLang 的時間處理

jopen 10年前發布 | 70K 次閱讀 Google Go/Golang開發 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 main

import ( "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 main

import ( "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 main

import ( "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


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!