конвертировать миллис в ZonedDateTime не работает - PullRequest
0 голосов
/ 03 октября 2019

У меня есть этот миллис в длину:

1570046362841

при конвертации с версия 1 :

var myDate = ZonedDateTime.ofInstant(Instant.ofEpochSecond(1570046362841), ZoneId.of("America/New_York"));

Я получу этот результат (что неверно! ):

+51722-10-16T03:58:54-04:00[America/New_York]

Однако при конвертации с версия 2 :

 final String dateFormat = "yyyy-MM-dd HH:mm:ss SSS";
 SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);
 formatter.setTimeZone(TimeZone.getTimeZone("America/New_York"));
 var dateObj = new Date(1570046362841);
 var myDate = formatter.format(dateObj);

я получаю правильный результат:

2019-10-02 15:59:59 934

Почему версия 1 неверна? Что не так в версии 1?

1 Ответ

4 голосов
/ 03 октября 2019

Вместо Instant.ofEpochSecond() вам нужно использовать Instant.ofEpochMilli(), потому что у вас есть миллис.

...