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 кажется решением для будущего.
Ссылки