2017-02-23 103 views
-1

спасибо.ParseException: Исключительное исключение для даты

разница по умолчанию в системе по умолчанию.

SimpleDateFormat sdf = new SimpleDateFormat ("MMM d, yyyy h: mm: ss a", Locale.ENGLISH);

решить.

Строка Дата Ошибка

Строка: Feb 13, 2017 10:25:43 AM

SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy h:mm:ss a"); 

или MMM d, yyyy h:mm:ss a, MMM d, yyyy hh:mm:ss a, MMM dd, yyyy h:mm:ss a, MMM dd, yyyy hh:mm:ss a, MMM dd, yyyy H:mm:ss a, MMM dd, yyyy HH:mm:ss a ... и т.д.

ParseException :::: : Непревзойденная дата: «13 февраля 2017 года 10:25:43»

справка plz.

+3

Работает как вы можете видеть [в режиме реального времени здесь, на IdeOne.com] (http://ideone.com/B9SzGo). Голосование, чтобы ** закрыть этот Вопрос как невоспроизводимый **. Хотя вы должны использовать классы java.time, а не эти неприятные старые устаревшие классы времени. –

+0

Здесь нет проблем – MadProgrammer

+0

Какова стандартная локаль вашей системы? –

ответ

-3

Попробуйте это.

Date dNow = new Date(); 
      SimpleDateFormat ft = new SimpleDateFormat(
        "E yyyy.MM.dd 'at' hh:mm:ss a zzz"); 

      System.out.println("Current Date: " + ft.format(dNow)); 
      String CurrentTime = ft.format(dNow); 
+2

** Неприемлемый ответ **. Вопрос касается * разбора * строк, а не * генерирующих * строк. –

0

Т.Л., д-р

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.