簡體   English   中英

如何使Go Time與js Date兼容

[英]How can I make go Time compatible with js Date

當我在js中定義這樣的時間

{expiry:new Date()}

並在這樣的go端點中創建一個結構

{Expiry time.Time `json:"expiry"`}

我收到了解析錯誤

"parsing time \"\"2006-01-02T15:04:05Z07:00\"\" as \"\"2006-01-02T15:04:05Z07:00\"\": cannot parse \"07:00\"\" as \"\"\""

有什么建議么?

time.UnmarshalJSON文檔指出:

UnmarshalJSON實現json.Unmarshaler接口。 該時間應為RFC 3339格式的帶引號的字符串。

存在一個問題,即所有瀏覽器都不一定將DateTime對象編碼為RFC3339格式。 但是,您的錯誤消息似乎並不暗示這一點。 您似乎嘗試對以下JSON字符串進行編碼:

"2006-01-02T15:04:05Z07:00"

那不是時間戳記,而是time包的參考布局。 請參閱下面的Playground示例,該示例顯示Go希望時間戳是什么樣的: http : //play.golang.org/p/4NQ1pRidPt

但是,瀏覽器不一致仍然存在該問題。 為了避免這種情況,您可以使用函數或庫,如@elithrar建議:

var a = {expiry: moment(new Date()).format("YYYY-MM-DDTHH:mm:ssZ")};
console.log(a);

輸出:

{"expiry": "2014-01-08T08:54:44+01:00"} 

JSFiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM