Преобразование строки метки времени ISO 8601 в секунды эпохи в Java

Я получаю строку в формате даты и времени ISO 8601 2020-11-03T15:23:24.388Z. Как лучше всего преобразовать это в секунды эпохи в Java?


person Hoya Coder    schedule 04.10.2020    source источник
comment
Это формат даты и времени ISO 8601.   -  person VGR    schedule 04.10.2020
comment
Примечание: если вы конвертируете в эпохальные секунды, миллисекунды будут исключены.   -  person Eklavya    schedule 04.10.2020
comment
@ArvindKumarAvinash Я сам был разочарован тем, что не нашел более подходящих исходных вопросов. Они должны быть там, не так ли? Тем не менее, я счел более полезным закрыть как дубликат со ссылками на некоторые вопросы, которые могут помочь вам в большинстве случаев, чем закрыть как дамп, не требующий усилий, без каких-либо ссылок, хотя вы можете возразить, что последнее было бы более правильным.   -  person Ole V.V.    schedule 04.10.2020
comment
Также @ArvindKumarAvinash, непременно бросьте мне вызов. Считаю вопросы оригиналов и дубликатов весьма спорными. Гуру - спасибо за красивое слово - который не выносит вызовов, не может быть настоящим гуру. И никто каждый раз не делает правильных суждений.   -  person Ole V.V.    schedule 04.10.2020
comment
Хойя Кодер, я считаю, что нам следовало сказать это, прежде чем обсуждать, дублируются ли ваши вопросы: это плохой вопрос по стандартам Stack Overflow. И да, мы разборчивы, и я надеюсь, вы простите мне мою прямолинейность. Вы должны сначала найти ответ, и вы, скорее всего, найдете его быстрее, чем мы сможем написать новый. Когда вы спрашиваете, вы должны сообщить, что было обнаружено в результате вашего поиска и почему он не дал ответа на ваш вопрос, или, точнее, что вы все еще упускаете. Пожалуйста, пройдите Как мне задать хороший вопрос? еще раз.   -  person Ole V.V.    schedule 05.10.2020
comment
Тем не менее, Hoya Coder, ваше мнение о том, является ли ваш вопрос дубликатом и в какой степени связанные исходные вопросы отвечают или не отвечают на ваш вопрос, также приветствуются.   -  person Ole V.V.    schedule 05.10.2020
comment
@ArvindKumarAvinash Я думаю, что нашел еще пару полезных предыдущих вопросов, поэтому отредактировал список оригиналов. Спасибо, что оказали на меня легкое давление.   -  person Ole V.V.    schedule 05.10.2020


Ответы (1)


Используя современный API даты и времени, вы можете сделать это, как показано ниже:

import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant instant = Instant.parse("2020-11-03T15:23:24.388Z");
        long seconds = instant.getEpochSecond();
        System.out.println(seconds);
    }
}

Вывод:

1604417004

Если вы делаете это для своего проекта Android и ваш уровень API Android по-прежнему не соответствует Java-8, проверьте API-интерфейсы Java 8+, доступные через удаление сахаров и Как использовать ThreeTenABP в Android Project.

Дополнительные сведения о современном API даты и времени см. На странице Trail: Date Time < / а>.

person Arvind Kumar Avinash    schedule 04.10.2020