конвертировать строку времени и даты в метку времени Unix - PullRequest
0 голосов
/ 08 марта 2019

У меня есть строка для даты и времени без пробелов между ними:

TueDec2618:47:09UTC2017

Есть ли способ конвертировать это в метки времени Unix? Строка даты и времени всегда будет в этом формате.

1 Ответ

3 голосов
/ 08 марта 2019

java.time и ThreeTen Backport

Комментарий от ernest_k хорошо продуман и решает вашу проблему:

    DateTimeFormatter formatter
            = DateTimeFormatter.ofPattern("EEEMMMddHH:mm:sszyyyy", Locale.ENGLISH);
    String dateTimeString = "TueDec2618:47:09UTC2017";
    ZonedDateTime dateTime = ZonedDateTime.parse(dateTimeString, formatter);
    long unixTimestamp = dateTime.toEpochSecond();
    System.out.println("Parsed date-time " + dateTime + " Unix timestamp " + unixTimestamp);

Результат работы в ThreeTen Backport1.3.6, протестировано на Java 1.7.0_79, это:

Разобранная дата-время 2017-12-26T18: 47: 09Z [Zulu] Unix timestamp 1514314029

Вопрос: Как я могу использовать ZonedDateTime и DateTimeFormatter на Java 7?

Я все еще на Java 7, поэтому не могу использовать ZonedDataTime и DateTimeFormatter, но я могу использовать библиотеку joda.

Действительно, вы можете.java.time требует как минимум Java 6 .

  • В Java 8 и более поздних версиях и на более новых устройствах Android (начиная с уровня API 26) современный встроенный API.
  • В Java 6 и 7 получите ThreeTen Backport, бэкпорт современных классов (ThreeTen для JSR 310; см. Ссылки внизу).
  • На (более старых) Android используется версия AndroidТрехдневного Backport.Это называется ThreeTenABP.И убедитесь, что вы импортируете классы даты и времени из org.threeten.bp с подпакетами.

Хотя Joda-Time было бы еще одним хорошим решением, я считаю, что вы должны предпочесть ThreeTen Backport вместо Joda-Time (хотя мнения расходятся).Домашняя страница Joda-Time сообщает:

Обратите внимание, что Joda-Time считается в значительной степени «законченным» проектом.Никаких серьезных улучшений не планируется.Если вы используете Java SE 8, перейдите на java.time (JSR-310).

Так что java.time кажется решением для будущего.

Ссылки

...