2012-03-10 2 views
0

Я пытаюсь преобразовать формат времени RC3339 в MM-dd-yyyy hh: mm a, но он показывает значение null в sampleDate.Regd не удалось разобрать дату:

timestamp = rcobj.getString("timestamp"); 
SimpleDateFormat sdf = new SimpleDateFormat(
    "yyyy-MM-dd'T'HH:mm:ss+SSSZ", Locale.US); 
Date sampleDate = sdf.parse(timestamp, new ParsePosition(0)); 
sdf = new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.US); 
if (timestamp != null) { 
    timestamp = sdf.format(sampleDate); 
} 
+0

И какова ценность 'timestamp'? И почему вы разбираете его, если он может быть нулевым, не проверяя сначала? (Кроме того, я предполагаю, что это Java, но это помогло бы, если бы вы пометили его таким образом ...) –

ответ

0

Если timestamp является неверная дата, то parse method бросает ParseException, так что это не так.

Если timestamp является null, parse() throws a NullPointerException.

Я могу в значительной степени гарантировать, что rcobj.getString("timestamp") возвращает null.


BTW parse(timestamp, new ParsePosition(0)) эквивалентен просто parse(timestamp).

+0

Временная метка имела значение следующим образом: 2012-01-19T18: 23: 43 + 0000. теперь изменяется путем изменения шаблона строки IN SimpleDateFormat. Я использовал это: yyyy-MM-dd'T'HH: mm: ss + SSSZ Вместо этого он работает, когда я использую yyyy-MM-dd'T'HH: mm : ss Он не соответствует шаблону смещения с моей строкой timestamp. Когда я изменил шаблон, он отлично работает. Это помогает мне. – user907998