2015-08-11 1 views
0

Мне нужна помощь в форматировании текста на Android/Java. Я боролся с тем, как разбирать и форматировать строку DateTime Google из базы данных SQLite. Там ошибка я получаюАнализ и форматирование Android DateTime timestamp

E/TAG﹕ Parsing ISO8601 datetime failed 
    java.text.ParseException: Unparseable date: "2015-08-04T18:20:00.000-04:00" (at offset 10) 
      at java.text.DateFormat.parse(DateFormat.java:579) 

Метод я написал это

import java.util.Date; 
import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.TimeZone; 

...

public String formatDueDate(String queryResponse) { 
     DateFormat iso8601Format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     Date date = new Date(); 
     try { 
      date = iso8601Format.parse(queryResponse); 
     } catch (ParseException e) { 
      Log.e("TAG", "Parsing ISO8601 datetime failed", e); 
     } 

     long when = date.getTime(); 
     int flags = 0; 
     flags |= android.text.format.DateUtils.FORMAT_SHOW_TIME; 
     flags |= android.text.format.DateUtils.FORMAT_SHOW_DATE; 
     flags |= android.text.format.DateUtils.FORMAT_ABBREV_MONTH; 
     flags |= android.text.format.DateUtils.FORMAT_SHOW_YEAR; 

     return android.text.format.DateUtils.formatDateTime(mContext, 
       when + TimeZone.getDefault().getOffset(when), flags); 

    } 

ответ

1

изменение попытка из

DateFormat iso8601Format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

в

DateFormat iso8601Format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
+0

Мой код, кажется, дает временную метку, которая находится на четыре часа позади часовой пояс устройства. Любые советы по настройке 'formatDateTime (mContext, , когда + TimeZone.getDefault(). GetOffset (when), flags);'? – idclark

Смежные вопросы