javascript - 将 Java OffsetDateTime 解析为 JS 日期

标签 javascript node.js datetime java-time

在我的基于 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/

相关文章:

javascript - 不滚动时滚动条消失

javascript - 如何在多个范围内定义 timeoutId

javascript - Node JS CLI + Node 库

java - 日期/时间计算何时涉及时区?

javascript - 如何在 JavaScript 中使用 goto?

javascript - 如何使用 fs 从 json 文件中获取 ID

python - 值错误: time data does not match format (convert part of string to time)

java - 将日期字符串解析为 "yyyy-MM-dd' T'HH :mm:ss' -'hh:mm" 时,小时、分钟和米尔值错误

javascript - 有没有办法在预启动 npm 脚本中自动运行 "nvm use"?

node.js - 如何使用 Passport.js 在 Node.js 中重置/更改密码?