Преобразование времени данных в UT C во время эпохи (секунды) - PullRequest
0 голосов
/ 27 мая 2020

Я хочу преобразовать метку времени в UT C, например 27 мая 2020 г., 22:35 (UT C) в эпохальные секунды. Я буду жестко кодировать время в своем коде, поэтому не нужно разбирать строку. Я использую класс Calendar следующим образом:

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendar.set(2020, Calendar.MAY, 22, 22, 35);
calendar.getTimeInMillis();

Время эпохи соответствует второму уровню, но миллисекунды кажутся случайными при каждом запуске. Пример вывода запуска:

Time : 1590618900110

Есть ли способ установить нулевое значение миллисекунды в объекте Calendar или лучший вариант, возможно, из структуры java .time ?

Изменить:

Следующее сработало для меня, так как я жестко кодирую UT C время в коде:

Instant instant = Instant.parse("2020-05-27T22:35:00.00Z");
long timeInMillisEpoch = instant.toEpochMilli();

Спасибо, Ахмед.

1 Ответ

2 голосов
/ 27 мая 2020

, так как вы уже знаете «точное время и дату», и я думаю, вы хотите избежать синтаксического анализа, вы можете использовать этот метод .of() из java.time.OffsetDateTime, например:

$ jshell

jshell> import java.time.*

jshell> OffsetDateTime odt = OffsetDateTime.of(2020, 5, 27, 22, 35, 0, 0, ZoneOffset.UTC)
odt ==> 2020-05-27T22:35Z

jshell> odt.toEpochSecond()
$14 ==> 1590618900

jshell> odt.toInstant().toEpochMilli()
$19 ==> 1590618900000

изменить : переписать, следуя советам @Andreas

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...