Javascript 如何使go Time与js Date兼容
当我在js中这样定义时间时Javascript 如何使go Time与js Date兼容,javascript,google-app-engine,go,google-cloud-endpoints,Javascript,Google App Engine,Go,Google Cloud Endpoints,当我在js中这样定义时间时 {expiry:new Date()} 并像这样在go端点中创建一个结构 {Expiry time.Time `json:"expiry"`} 我从go得到一个解析错误 "parsing time \"\"2006-01-02T15:04:05Z07:00\"\" as \"\"2006-01-02T15:04:05Z07:00\"\": cannot parse \"07:00\"\" as \"\"\"" 有什么建议吗?time.UnmarshalJSON的
{expiry:new Date()}
并像这样在go端点中创建一个结构
{Expiry time.Time `json:"expiry"`}
我从go得到一个解析错误
"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
包的参考布局。请参见此示例,该示例显示Go如何期望时间戳:
但是,浏览器不一致性仍然存在这个问题。为了避免这种情况,您可以使用函数或库,正如@elithrar所建议的:
var a = {expiry: moment(new Date()).format("YYYY-MM-DDTHH:mm:ssZ")};
console.log(a);
输出:
{"expiry": "2014-01-08T08:54:44+01:00"}
time.UnmarshalJSON的文档说明: UnmarshalJSON实现json.Unmarshaler接口。时间应为RFC 3339格式的带引号字符串 存在一个问题,即所有浏览器不一定将
DateTime
对象编码为RFC3339格式。然而,您的错误消息似乎并不暗示这一点。您似乎试图对以下JSON字符串进行编码:
"2006-01-02T15:04:05Z07:00"
这不是时间戳,而是time
包的参考布局。请参见此示例,该示例显示Go如何期望时间戳:
但是,浏览器不一致性仍然存在这个问题。为了避免这种情况,您可以使用函数或库,正如@elithrar所建议的:
var a = {expiry: moment(new Date()).format("YYYY-MM-DDTHH:mm:ssZ")};
console.log(a);
输出:
{"expiry": "2014-01-08T08:54:44+01:00"}
我认为这个答案会帮助你:好的,这将是一个go解决方案,那么js解决方案如何重新格式化时间字符串,以便端点接受?我认为这个答案会帮助你:好的,这将是一个go解决方案,那么js解决方案如何重新格式化时间字符串以便端点接受呢?为什么google chrome决定做一些与RFC3339不同的事情?(新日期()).toJSON();同一家公司,他们仍然不能告诉对方时间:)@GertCuykens Chrome实际上对我来说很好<代码>(新日期()).toJSON()代码>返回RFC3339后面的
“2014-01-08T15:31:18.683Z”
<代码>Z可以。这是无效的Z07:00
。嗯,我在07:00的代码中到底在哪里?哈哈:)谢谢你能把这个添加到你的答案中吗{expiry:new Date().toJSON()}
对我也有效{expiry:new Date()}
,谷歌浏览器为什么决定做一些与RFC3339不同的事情?(新日期()).toJSON();同一家公司,他们仍然不能告诉对方时间:)@GertCuykens Chrome实际上对我来说很好<代码>(新日期()).toJSON()代码>返回RFC3339后面的“2014-01-08T15:31:18.683Z”
<代码>Z可以。这是无效的Z07:00
。嗯,我在07:00的代码中到底做了什么,哈哈:)谢谢你能把这个添加到你的答案中吗{expiry:new Date().toJSON()}
对我也有效{expiry:new Date()}