tl; dr
OffsetDateTime.parse( "2010-12-27T10:50:44.000-08:00" )
ISO 8601
Формат входной строки определен в стандарте ISO 8601 , семействе форматов даты и времени.
Избегайте старых классов даты и времени
В Вопросе и других ответах используются старые устаревшие классы даты и времени, включенные в самые ранние версии Java.Избежать их.Теперь вытеснены классами java.time.
Использование java.time
Ваша строка ввода заканчивается offset-from-UTC .Таким образом, мы анализируем как объект OffsetDateTime
.
Классы java.time по умолчанию используют форматы ISO 8601 при разборе / генерации строк.Поэтому нет необходимости указывать шаблон форматирования.
OffsetDateTime odt = OffsetDateTime.parse( "2010-12-27T10:50:44.000-08:00" );
Если вы хотите просмотреть это значение даты и времени в качестве момента на временной шкале в UTC, извлеките Instant
.
Instant instant = odt.toInstant();
Часовой пояс - это смещение плюс набор правил для обработки аномалий, таких как летнее время (DST).Если у вас есть часовой пояс, примените ZoneId
, чтобы получить ZonedDateTime
объект.Тот же момент на временной шкале, но при просмотре через другое время настенных часов .
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = odt.atZoneSameInstant( z ); // Same moment on the timeline, but viewed through a different wall-clock time.
![image](https://i.stack.imgur.com/MZe55.png)
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии.Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
. Вы можете обмениваться java.time объектами напрямую с вашей базой данных.Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии.Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
ThreeTen-Extra Проект расширяет java.time дополнительными классами.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .