我们的代码非常类似于下面的代码,我们将 java.util.Date 从日期减去一定的秒数,并将其作为字符串存储在 sqlite 数据库中:
private static final String DB_DATE_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ssZ"
SimpleDateFormat DATE_FORMAT_NO_MS = new SimpleDateFormat(DB_DATE_FORMAT_STRING, Locale.US);
String dateToString(java.util.Date date date) {
return DATE_FORMAT_NO_MS.format(date);
}
然后我们在 java 8 DateTimeFormatter 中使用相同的字符串来制作 Java 8 OffsetDateTime:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DB_DATE_FORMAT_STRING);
OffsetDateTime odt = eventData.setDateReceived(OffsetDateTime.parse(dateString, eventDbTimeFormatter));
在将 db 字符串解析回 OffsetDateTime 时,我们不断收到如下所示的崩溃报告:
2019-0005-12T12:07:47-0500' 无法在索引 7 org.threeten.bp.format.DateTimeFormatter.parseToBuilder 处解析
SimpleDateFormat 的月份如何变成 0005?