2014-01-08 55 views
1

当我在JS我怎样才能让去的时间与JS日期兼容

{expiry:new Date()} 

定义时间这样的创造中去端点一个结构类似这样的

{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 \"\"\"" 

有什么建议吗?

+1

我想这个答案将帮助您:HTTP:// stackoverflow.com/a/20476078/683201 –

+0

好的,这将是一个去解决方案,那么一个JS解决方案重新格式化时间字符串,所以端点接受? –

+1

http://momentjs.com/ – elithrar

回答

5

为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

+0

为什么google chrome决定做一些与RFC3339不同的事情? (new Date())。toJSON();同样的公司,他们仍然不能告诉对方的时间:) –

+0

@GertCuykens Chrome实际上对我来说工作得很好。 '(new Date())。toJSON();'returns'“2014-01-08T15:31:18.683Z”'遵循RFC3339。 'Z'很好。它是'Z07:00',是无效的。 – ANisus

+0

嗯在哪里做了我在07:00在我的代码然后哈哈:)谢谢 –

相关问题