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.
![](https://i.stack.imgur.com/MZe55.png)
Относно java.time
java.time рамката е вградена в 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