javascript - 将 Java OffsetDateTime 解析为 JS 日期
问题描述
在我的 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
你的情况下的月份值做。
推荐阅读
- c# - C++ 模板与具有各种参数的 C# 泛型方法
- java - 如果Netty channel isWritable return false,数据会在哪里排队
- android - TouchableOpacity onPress 在 Android 中未触发
- jquery - 在 Jquery 函数工作时向用户显示工作文本
- scala - 使用 spark xml 读取值 xml 标记值,想要获取值但给我列表
- http - 包含上传文件的文件名的 HTTP 标头字段
- c++ - C ++如何根据另一个变量和一些算术定义一个变量的值
- angular - 无法完全删除 Angular 7 中元素的边距
- c# - 可以为空的属性,或允许为空的属性,代码异味(在 OOP 语言中)吗?
- node.js - 使用zeit打包为windows .exe时如何在后台运行nodejs服务器?