2016-04-12 50 views
1

我試圖在Golang中生成ISO 8601時間戳。Golang的Javascript toISOString時間

在Javascript

time.Now().UTC().Format(time.RFC3339) 
//2016-04-12T19:32:20Z 

new Date().toISOString() 
//2016-04-12T19:46:47.286Z 

看來,唯一的區別是在JavaScript中的時間報告毫秒,而Golang它產生在幾秒鐘。我想嘗試讓這些都一樣。

我已經看了time.RFC3339Nano

但是,產生過多的精度2016-04-12T19:35:16.341032697Z

我怎樣才能得到Golang生產時間等同於JavaScript的toISOString()

回答

2

通過觀察在pkg /時間,其中constants are defined

RFC3339  = "2006-01-02T15:04:05Z07:00" 
RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00" 

從文檔:

在佈局中使用的參考時間是特定時間: 週一1月2日15點04分: 05 MST 2006

要定義自己的格式,寫下參考時間看起來像格式化的方式;

它應該是像這樣:

JavascriptISOString := "2006-01-02T15:04:05.999Z07:00" 
time.Now().UTC().Format(JavascriptISOString) 
+0

的偉大工程。奇怪的是,它並沒有像'RFC3339Milli'或其他定義的東西..他們從幾秒到幾納秒 – K2xL

+0

你是對的,但語言設計師傾向於尋找一個最小集(即使它有時排除有用的東西)。至少它自己做起來很容易。 –