在我的基于 JS 的微服务中,我以某种方式从内部使用 OffSetDateTime 的 java 微服务获取以下 JSON。
{
"eventTime": "eventTime":{
"offset":{
"totalSeconds":0,
"id":"Z",
"rules":{
"fixedOffset":true,
"transitions":[
],
"transitionRules":[
]
}
},
"year":2018,
"month":"NOVEMBER",
"dayOfMonth":9,
"dayOfWeek":"FRIDAY",
"dayOfYear":313,
"monthValue":11,
"hour":5,
"minute":57,
"second":21,
"nano":716000000
}
}
而不仅仅是
{"eventTime" :"2018-11-09T05:57:21.716Z" }
如何在 JS 中解析这个?下面给我 NaN
Date.parse(eventTime)
其中 eventTime 是上面提到的第一个字符串。
最佳答案
您需要手动解析它。像这样的事情会起作用:
var res = {
"eventTime":{
"offset":{
"totalSeconds":0,
"id":"Z",
"rules":{
"fixedOffset":true,
"transitions":[
],
"transitionRules":[
]
}
},
"year":2018,
"month":"NOVEMBER",
"dayOfMonth":9,
"dayOfWeek":"FRIDAY",
"dayOfYear":313,
"monthValue":11,
"hour":5,
"minute":57,
"second":21,
"nano":716000000
}
};
var d = new Date(
res.eventTime.year,
res.eventTime.monthValue - 1,
res.eventTime.dayOfMonth,
res.eventTime.hour,
res.eventTime.minute,
res.eventTime.second,
res.eventTime.nano/1000000
);
alert(d.getTime());
Javascript 不支持纳秒。它仅支持高达毫秒的粒度。
此外,月份的范围是 0 - 11
,因此您需要对您的案例中的月份值执行 value - 1
。
关于javascript - 将 Java OffsetDateTime 解析为 JS 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53229186/