SimpleDateFormat
не может правильно проанализировать вашу строку даты и времени. SimpleDateFormat
общеизвестно хлопотно и давно устарело. Ни для этого, ни для каких-либо других целей вы не должны использовать его. Вместо этого просто используйте класс LocalDateTime
из java .time, современный Java API даты и времени. Он анализирует вашу строку без какого-либо явного средства форматирования.
Вы не можете с SimpleDateFormat
В вашей строке два знака после запятой на секунду минуты, .04
, что означает 4 сотых второй. SimpleDateFormat
поддерживает только три десятичных знака в секундах, а не два или четыре или любое другое число. Таким образом, нет способа, которым он может правильно проанализировать вашу строку.
java .time
Похоже, вы предполагаете, что строка, которую вы анализируете, находится в UT C, и вы хотите преобразовать его в часовой пояс по умолчанию вашего устройства. Ваша строка имеет формат ISO 8601, формат, который классы java .time анализируют как значения по умолчанию, поэтому нам не нужно указывать какой-либо форматер.
String dateStr = "2020-02-13T16:57:13.04";
LocalDateTime dateTime = LocalDateTime.parse(dateStr);
ZonedDateTime inDefaultTimeZone = dateTime.atOffset(ZoneOffset.UTC)
.atZoneSameInstant(ZoneId.systemDefault());
System.out.println(inDefaultTimeZone);
На моем компьютере в Европе / Часовой пояс Копенгагена выводит из этого фрагмента:
2020-02-13T17: 57: 13.040 + 01: 00 [Европа / Копенгаген]
Вопрос: не ' t 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 используйте редакцию ThreeTen Backport Android. Это называется ThreeTenABP. И убедитесь, что вы импортируете классы даты и времени из
org.threeten.bp
с подпакетами.
Ссылки