#date #time #java-8 #response #difference
#Дата #время #java-8 #ответ #разница
Вопрос:
Я хотел вычислить разницу между текущим временем и отметкой времени в микросекундах (2020-10-06T08:52:54.3556219Z), которую я получил в ответе, используя Java 8, пожалуйста, сообщите. Я использовал следующее, и я не получил никакого конкретного решения, поэтому спрашиваю здесь!
- LocalDateTime
- ZonedDateTime
- SimpleDateFormat
Комментарии:
1. Вы должны использовать
Instant
.2. Я уже пробовал Instant и повторил еще раз, как показано ниже, надеюсь, это правильно:
timestamp = Instant.parse(payload.getTimestamp());//2020-10-06T10:05:45.027416200Z now_timestamp = Instant.now();//2020-10-06T10:05:45.034Z diffInNanos = Math.abs(now_timestamp.compareTo(timestamp)); // NANO SECONDS diffInMicros = diffInNanos / 1000; // MICRO SECONDS diffInMillis = diffInMicros / 1000; // MILLI SECONDS diffInSeconds = diffInMillis / 1000; // SECONDS assertThat(diffInSeconds < acceptableLimit)
3. Наконец, значение разницы в секундах в приведенном выше примере было «0.0065837996».
4.
compareTo
не указано, чтобы дать вам разницу. Вы можете использоватьInstant.parse("2020-10-06T08:52:54.3556219Z").until(Instant.now(), ChronoUnit.SECONDS)
, например.5. Как я могу разобрать ‘Вт, 06 Окт 2020 13:42: 02 GMT’ в Instant?
Ответ №1:
Вы можете использовать Instant
и вызывать .getEpochSecond()
, чтобы получить секунды, а затем вычислить разницу в секундах
Instant dateTime = Instant.parse("2020-10-06T10:05:45.027416200Z");
Instant nowDateTime = Instant.now(); // 2020-10-06T10:44:23.173333200Z
long diffSeconds = nowDateTime.getEpochSecond() - dateTime.getEpochSecond();
Вывод: 2318