Oracle дата до даты Java - PullRequest
       6

Oracle дата до даты Java

9 голосов
/ 24 августа 2011

Какой SimpleDateFormat использовать для разбора даты Oracle?

Я использую этот SimpleDateFormat.

SimpleDateFormat dateFormat = new SimpleDateFormat ("гггг / мм / дд чч: мм: сс.ссс");

это дает это исключение.

java.text.ParseException: Неразборчивая дата: «2011-08-19 06: 11: 03.0»

Пожалуйста, скажите мне использовать SimpleDateFormat. Спасибо.

Ответы [ 2 ]

14 голосов
/ 24 августа 2011

Вы должны использовать этот паттерн "yyyy-MM-dd HH:mm:ss.S" вместо "yyyy/mm/dd hh:mm:ss.sss".

мало h для «Часа в час / час (1-12)» и H для «Часа в день (0-23)»
см. здесь: SimpleDateFormat

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
Date date = dateFormat.parse("2011-08-19 06:11:03.0");
1 голос
/ 14 января 2018

ТЛ; др

LocalDateTime.parse( 
    "2011-08-19 06:11:03.0".replace( " " , "T" ) 
) 

Подробнее

Ваша входная строка не соответствует вашему шаблону форматирования. В вашем шаблоне есть символы косой черты, где в ваших данных есть дефисы.

java.time

Кроме того, вы используете ужасные старые классы даты и времени, которые теперь унаследованы, заменены java.time классами.

Ваша входная строка почти соответствует стандарту ISO 8601 для форматов даты и времени. Замените ПРОБЕЛ в середине на T.

String input = "2011-08-19 06:11:03.0".replace( " " , "T" ) ;

В вашем входе отсутствует индикатор часового пояса или смещения от UTC. Таким образом, мы анализируем как LocalDateTime для объекта, не имеющего понятия зоны / смещения.

LocalDateTime ldt = LocalDateTime.parse( input ) ;

Чтобы сгенерировать строку в стандартном формате, позвоните toString.

String output = ldt.toString() ;

Если этот вход был предназначен для определенного часового пояса, назначьте его.

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
ZonedDateTime zdt = ldt.atZone( z ) ;

О java.time

Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar, & SimpleDateFormat.

Проект Joda-Time , теперь в режиме обслуживания , рекомендует выполнить переход на классы java.time .

Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .

Используя драйвер JDBC , соответствующий JDBC 4.2 или более поздним версиям, вы можете напрямую обмениваться объектами java.time с вашей базой данных. Нет необходимости в строках или 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 (упоминалось выше). См. Как использовать ThreeTenABP… .

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval, YearWeek, YearQuarter и more .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...