java .time
A Locale
не имеет ничего общего с содержимым объекта даты и времени. Локаль входит в изображение только при генерации текста для представления значения объекта даты и времени. Я подозреваю, что ваше намерение состоит в том, чтобы скорректировать смещение от UT C часов-минут-секунд до времени настенных часов, используемого людьми определенного региона (часового пояса).
Никогда используйте SimoleDateFormat
или Date
или Calendar
. Эти ужасные классы даты и времени были вытеснены java .time лет a go. Для Android до 26 добавьте ThreeTenABP библиотеку в ваш проект.
Это моя дата ввода в строке: "2020-01-16T19: 44: 48.303 + 0000"
Совет. Классы java .time и другие структуры даты и времени работают лучше, если включить двоеточие символ между часами и секундами в смещении: +00:00
.
Если все ваши входы имеют одинаковое смещение, замените эту часть строки.
String input = "2020-01-16T19:44:48.303+0000".replace( "+0000" , "+00:00" ) ;
Разобрать как Instant
, момент в UT C.
Instant instant = Instant.parse( input ) ;
Генерация строки в нужном формате. Вы действительно хотите один git месяц с двумя git днем? И один ди git час с двумя ди git минутами?
DateTimeFormatter f = DateTimeFormatter.ofPattern( "M/dd/uu - h:mm a" ).withLocale( locale ) ;
ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
String output = instant.atZone( z ).format( z ) ;
Я предлагаю вместо этого позволить java .time автоматически локализовать для вас с DateTimeFormatter.ofLocalizedDateTime
.
О java .time
java .time интегрирован в Java 8 и позже. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Чтобы узнать больше, см. Учебник Oracle . И поиск переполнения стека для многих примеров и объяснений. Спецификация: JSR 310 .
Проект Joda-Time , теперь в режиме обслуживания , рекомендует переход на java .time классы.
Вы можете обмениваться java .time объектами напрямую с вашей базой данных. Используйте драйвер JDB C , совместимый с JDB C 4.2 или более поздней версией. Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где взять классы java .time?