java .time и ThreeTenABP
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"EEEE, MMM dd uuuu; hh:mm:ss a '(GMT' xxx')'", Locale.ENGLISH);
String tempDate = "Thursday, Jan 09 2020; 04:31:59 PM (GMT +05:30)";
OffsetDateTime odt = OffsetDateTime.parse(tempDate, formatter);
System.out.println(odt);
Выходные данные из этого фрагмента:
2020-01-09T16: 31: 59 + 05: 30
Чтобы получить правильное время, вам необходимо проанализировать смещение по Гринвичу в строке.
Я использую java .time, современный Java API даты и времени потому что SimpleDateFormat
и Date
плохо спроектированы и давно устарели, первые особенно печально известны своими проблемами. И поскольку java .time намного приятнее работать.
Вопрос: Разве java .time не требует Android API уровня 26?
java .time прекрасно работает как на старых, так и на новых Android устройствах. Для этого требуется как минимум Java 6 .
- В Java 8 и более поздних версиях, а также на более новых Android устройствах (от уровня API 26) современный встроенный API -in.
- В не- Android Java 6 и 7 получите ThreeTen Backport, бэкпорт современных классов (ThreeTen для JSR 310; см. ссылки внизу).
- Вкл. (Старше) Android Используйте версию Android ThreeTen Backport. Это называется ThreeTenABP. И убедитесь, что вы импортируете классы даты и времени из
org.threeten.bp
с подпакетами.
Ссылки