2014-09-16 5 views
1

Для наблюдения я просто добавил фрагмент своего кода. Он хорошо работает для даты форматирования со смещением часового пояса, но не может разобрать, что было отформатировано.Невозможно разобрать дату с часовым поясом

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss.SZ"); 
    Date javaDate = new Date(); 
    String stringDate = format.format(javaDate); 
    System.out.println("Date: " + stringDate); 

    try { 
     javaDate = format.parse(stringDate); //reverse of format 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

Любой прямой путь? Считаете, что 20140916130644.236+0600 - это строка даты, которую вы должны разобрать с часовым поясом, каков будет ваш формат даты? Вы можете легко разобрать yyyyMMddHHmmss.S шаблон, в то время как . не факт, основной факт Z при разборе не для форматирования.

+0

показать исходный формат даты, например 2014-14-02 02:14:15 –

+0

use '.' вместо '.' в '' yyyyMMddHHmmss.SZ "' –

ответ

0

Прямой путь вперед формат дата разбора должен быть выглядеть yyyyMMddHHmmss.SSSZ, Форматирование формата и разбор формата может отличаться. Формат форматирования (yyyyMMddHHmmss.SZ) не должен использоваться для разбора. Формат форматирования (yyyyMMddHHmmss.SSSZ) может использоваться для форматирования. Чтобы избежать неожиданного результата/исключения лучше использовать yyyyMMddHHmmss.SSSZ формат для форматирования/разбора, а не yyyyMMddHHmmss.SZ

3

Поскольку . не является действительным, удалите его и попробовать, как этот

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSZ"); 

или если вы хотите иметь «» затем использовать как этот

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss'.'SZ"); 
1

Изменить

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss.SZ"); 

в

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss'.'SZ"); 

Форматы даты и времени определяются по дате и времени строки шаблона. В строках строк даты и времени, неуказанные буквы от 'A' до 'Z' и от 'a' до 'z' интерпретируются как буквы шаблонов, представляющие компоненты даты или строки времени. Текст может быть цитируется с использованием одинарных кавычек ('), чтобы избежать интерпретации.

1

'T' и 'Z' рассматриваются здесь как постоянные. Вам нужно передать Z без кавычек. Кроме того, вам нужно указать часовой пояс во входной строке.

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");