Разобрать Java OffsetDateTime в JS Date - PullRequest
0 голосов
/ 09 ноября 2018

В моем микросервисе баз JS я как-то получаю следующий JSON из моего микросервиса java, который внутренне использует OffSetDateTime.

{
   "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 - первая упомянутая выше строка.

1 Ответ

0 голосов
/ 09 ноября 2018

Вам нужно разобрать его вручную. Примерно так будет работать:

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 для значения месяца в вашем случае.

...