2011-05-04 49 views

回答

79

使用time.Now()函數和time.Format()方法。

t := time.Now() 
fmt.Println(t.Format("20060102150405")) 

打印出20110504111515,或至少它在幾分鐘前做了。 (我在東部夏令時。)在時間包中定義的constants中有幾種預定義的時間格式。

如果您希望UTC比當地時區晚,則可以使用time.Now().UTC()

+10

我絕對喜歡'Kitchen'常數('=「3:04 PM」') – tux21b 2011-05-04 15:25:31

+3

感謝您的信息。時間包如何通過傳遞「20060102150405」知道,我們正在傳遞什麼,因爲它不是時間包中的預定義常量之一?時間包(20060102150405)中該日期和時間的重要性如何?這對我來說似乎有些古怪,但只要它有效,我認爲只要我們在編碼時不會出現錯誤就沒有關係。我想他們認爲不適合爲該格式提供常量,並匹配字符串模式。 – brianoh 2011-05-05 03:20:13

+5

@brianoh:請參閱http://golang.org/pkg/time/#Constants現在是時間「01/02 03:04:05 PM '06 -0700」因爲每個組件都有不同的編號(1,2,3等等),它可以根據數字確定你想要的組件。 – newacct 2011-05-05 06:38:21

31

使用time.Now()time.Format()功能

t := time.Now() 
fmt.Println(t.Format("20060102150405")) 

Online demo(帶日期固定在過去的操場上,永遠記(如time.LocalTime()不作爲圍棋1.0.3的存在了) )

+5

你可以簡單地將它用作這樣的字符串:''s:=「實際時間是:」+ time.Now()。String() ''' – Michael 2014-03-09 11:19:18

29

爲了增強可讀性,最好用的時間包中的RFC常數(我認爲)

import "fmt" 
import "time" 

func main() { 
    fmt.Println(time.Now().Format(time.RFC850)) 
} 
+3

正是我所搜尋的。 – 2015-04-06 00:02:50

+1

這是怎麼產生YYYYMMDDhhmmss? – Rod 2016-05-26 06:30:07

25

所有其他respons e對於來自谷歌並尋找「時間戳進去」的人非常錯過! YYYYMMDDhhmmss不是「時間戳」。

要獲得在旅途中日期的「時間戳」(從1970年1月的秒數),正確的功能.Unix(),它真的返回一個整數

+5

我同意;這個問題應該被稱爲「當前日期」而不是「當前時間戳」 – developerbmw 2016-08-12 05:40:51

+1

儘管已經很晚了,我想.Unix()應該指向https://golang.org/pkg/time/#Time.Unix,它的返回類型是int64 。 – bornfree 2018-02-11 15:39:50

+0

你完全正確,更新 – Bactisme 2018-02-12 16:30:56

1

作爲回聲@ Bactisme的響應,方式一個會去檢索當前時間戳(以毫秒爲單位,例如)是:

msec := time.Now().UnixNano()/1000000 

資源:https://gobyexample.com/epoch

-3

要回答這個問題詢問:

import "github.com/golang/protobuf/ptypes" 

Timestamp, _ = ptypes.TimestampProto(time.Now())