2016-06-29 3 views
-2

Я пытаюсь разобрать String в объект Date с помощью SimpleDateFormat. Ниже мой кодUnparsable date Exception Simple Date Format

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm.sss"); 
Date parsedDate = formatter.parse("2016-06-28T14:10:23.374Z"); 
System.out.println(parsedDate.toString()); 

Это дает мне ниже исключением

Exception in thread "main" java.text.ParseException: Unparseable date: "2016-06-28T14:10:23.374Z" 
at java.text.DateFormat.parse(DateFormat.java:368) 
at com.bac.rds.dolphin.test.Main.main(Main.java:60) 

Мое понимание проблемы заключается в том, что формат строки Я использую в SDF не может быть appropriate.I я не очень знакомы с SimpleDateFormat любая помощь для получения этой работы оценена.

EDIT

обновил свой формат строки, как показано ниже

yyyy-MM-dd'T'HH:mm:ss.SSS 

Эта строка формата может разобрать строку в дату объекта. Но когда я пытаюсь включить Z в конец строки формата inorder, чтобы указать часовой пояс, поскольку Z есть также в строке даты, которую я имею. Это дает исключение синтаксического анализа.

Ниже формат метания разбора исключение

yyyy-MM-dd'T'HH:mm:ss.SSSZ 

Почему такое поведение?

+4

Посмотрите на ваш шаблон - это не заканчивается с Z, но имеет значение. Аналогично, ваш шаблон использует 'hh', который является спецификатором формата 1-12 часов, но для этого значение имеет значение 14. Вы читали документацию SimpleDateFormat для проверки каждой части вашего шаблона? –

+0

взгляните на этот документ, чтобы понять методы разбора: https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html – Riad

+2

Также вы пытаетесь разобрать миллисекунды как секунд и не имеют шаблонов для разбора секунд. – DanielBarbarian

ответ

0

Попробуйте

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
Date parsedDate = formatter.parse("2016-06-28T14:10:23.374Z"); 
System.out.println(parsedDate.toString()); 

и выход

Tue Jun 28 14:10:23 IST 2016 
+1

Итак, вы разбираете 10 минут и 23 секунд, но выход составляет 16 минут и 14 секунд. Это звучит не так, не так ли? –

+0

@ErwinBolwidt Знаете ли вы, почему? –

+0

В нижнем регистре будут отображаться секунды, которые вы положили дважды в свой шаблон. Верхний регистр S анализирует миллисекунды. – DanielBarbarian