tl;dr
OffsetDateTime.parse( "2010-12-27T10:50:44.000-08:00" )
ИСО 8601
Формат входной строки определяется в стандарте ISO 8601, семействе форматов даты и времени.
Избегайте старых классов даты и времени
Вопрос и другие ответы используют старые устаревшие классы даты и времени, связанные с самыми ранними версиями Java. Избежать их. Теперь вытеснены классами java.time.
Использование java.time
Ваша входная строка заканчивается смещением от 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.
О java.time
java.time framework встроен в Java 8 и более поздние версии. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и SimpleDateFormat
.
Проект Joda-Time, теперь в режим обслуживания, советует перейти на java.time.
Дополнительные сведения см. в Учебном руководстве по Oracle. . И поищите множество примеров и пояснений в Stack Overflow. Спецификация: JSR 310.
Вы можете обмениваться объектами java.time непосредственно с вашей базой данных. Используйте драйвер JDBC, совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является испытательным полигоном для возможных дополнений к java.time в будущем. Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и подробнее.
person
Basil Bourque
schedule
05.09.2016