Имам проблем с разбора на дата. В моето приложение извличам нови коментари от нашия сървър. Извлечените дълги времеви отпечатъци на епоха са правилни, но когато се опитвам да ги запазя в sqlite db, понякога последните коментари анализират датата погрешно.
SimpleDateFormat:
this.dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
this.dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
Разбор:
Log.v("GET COMMENT TIME A", ""+cu.getString(cu.getColumnIndex("creation_time")));
try {
Log.v("GET COMMENT TIME B",""+dateFormat.parse(cu.getString(cu.getColumnIndex("creation_time"))));
c.setCreation_time(dateFormat.parse(cu.getString(cu.getColumnIndex("creation_time"))));
Log.v("GET COMMENT TIME C", ""+c.getCreation_time());
} catch (ParseException e) {}
Logcat: предишни коментари анализирани ДОБРЕ
01-13 13:01:58.009: V/GET COMMENT TIME A(10536): 2013-01-13 12:01:37
01-13 13:01:58.017: V/GET COMMENT TIME B(10536): Sun Jan 13 13:01:37 CET 2013
01-13 13:01:58.017: V/GET COMMENT TIME C(10536): Sun Jan 13 13:01:37 CET 2013
Logcat: последният коментар е анализиран ГРЕШНО:
01-13 13:01:58.064: V/GET COMMENT TIME A(10536): 2013-01-13 12:01:41
01-13 13:01:58.064: V/GET COMMENT TIME B(10536): Sun Jan 13 13:01:41 CET 2013
01-13 13:01:58.064: V/GET COMMENT TIME C(10536): Tue Jan 01 13:01:41 CET 2013
Така че, когато погледнете logcat GET COMMENT TIME B и C, можете да видите това
dateFormat.parse(cu.getString(cu.getColumnIndex("creation_time")))
първо връща коригирано анализирано време и 1 ред по-нататък анализира друго грешно време? Или защо getCreation_time() понякога връща грешно анализирана дата?
редактиране: коментарът има само getter и setters
public Date getCreation_time() {
return creation_time;
}
public void setCreation_time(Date creationTime) {
this.creation_time = creationTime;
}
String
s (а неDate
s), след което просто да го зададете наcu.getColumnIndex("creation_time")
и да оставите вашия dateFormat да анализира този съхранен низ? - person saschoar   schedule 15.01.2013