Как получить разницу в секундах между now () и TimeStamp с микросекундами (2020-10-06T08:52:54.3556219Z) и использованием Java 8?

#date #time #java-8 #response #difference

#Дата #время #java-8 #ответ #разница

Вопрос:

Я хотел вычислить разницу между текущим временем и отметкой времени в микросекундах (2020-10-06T08:52:54.3556219Z), которую я получил в ответе, используя Java 8, пожалуйста, сообщите. Я использовал следующее, и я не получил никакого конкретного решения, поэтому спрашиваю здесь!

  1. LocalDateTime
  2. ZonedDateTime
  3. 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