Т.Л., д-р
LocalDateTime.parse(
"Feb 13, 2017 10:25:43 AM" ,
DateTimeFormatter.ofPattern("MMM d, uuuu hh:mm:ss a" , Locale.US)
)
2017-02-13T10: 25: 43
java.time
Вы используете хлопотно старые классы даты и времени которые теперь являются устаревшими, вытесняются классами java.time.
Укажите шаблон форматирования, соответствующий вашему вводу. Обратите внимание, что мы передаем Locale
, чтобы указать человеческий язык и культурные нормы, используемые при переводе названия месяца и тому подобного.
String input = "Feb 13, 2017 10:25:43 AM" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern("MMM d, uuuu hh:mm:ss a" , Locale.US) ;
В вашей строке ввода отсутствует какой-либо индикатор часового пояса или смещение-от-UTC. Итак, проанализируйте как LocalDateTime
.
LocalDateTime ldt = LocalDateTime.parse(input , f );
ldt.toString(): 2017-02-13T10: 25: 43
Кстати, если ваш вход имел запятую после года, вы могли бы проанализированы с помощью автоматически локализованного форматирования, а не пытаться определить шаблон форматирования. Эта запятая, по-видимому, является нормой для Соединенных Штатов (по крайней мере).
String input = "Feb 13, 2017, 10:25:43 AM" ; // With a comma after year, apparently the norm in the United States.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(Locale.US)
LocalDateTime ldt = LocalDateTime.parse(input , f );
О java.time
java.time каркас встроен в Java 8 и более поздних версий.Эти классы вытесняют неприятные старые legacy классы времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time, теперь в maintenance mode, советует перейти на классы java.time.
Чтобы узнать больше, см. Oracle Tutorial. И поиск Stack Overflow для многих примеров и объяснений. Спецификация: JSR 310.
Вы можете обмениваться java.time объекты непосредственно у вашей базы данных. Используйте JDBC driver, совместимый с JDBC 4.2 или более поздней версией. Нет необходимости в строках, нет необходимости в классах java.sql.*
.
Где получить классы java.time?
- Java SE 8, Java SE 9, а затем
- Встроенный.
- Часть стандартного Java API с объединенной реализацией.
- Java 9 добавляет некоторые незначительные функции и исправления.
- Java SE 6 и Java SE 7
- Большая часть функциональности java.time будет обратно портирован на Java 6 & 7 в ThreeTen-Backport.
- Android
- Более поздние версии Android реализаций пачке классов java.time.
- Для более ранних Android, проект ThreeTenABP адаптирует ThreeTen-Backport (упомянутый выше). См. How to use ThreeTenABP….
ThreeTen-Extra Проект расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more.
Работает как вы можете видеть [в режиме реального времени здесь, на IdeOne.com] (http://ideone.com/B9SzGo). Голосование, чтобы ** закрыть этот Вопрос как невоспроизводимый **. Хотя вы должны использовать классы java.time, а не эти неприятные старые устаревшие классы времени. –
Здесь нет проблем – MadProgrammer
Какова стандартная локаль вашей системы? –