我想解析这样发送给我的日期..
2011-03-02T09:06:07.404-07:00
问题是在使用 SimpleDateFormat 对象时,我得到一个解析异常,我很确定它是因为时区中的冒号。
这是我的 SimpleDateFormat 设置。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
以下是开发人员文档中可解析日期字符串的可能差异列表。如您所见,它们在时区中都没有冒号。
yyyy-MM-dd 1969-12-31
yyyy-MM-dd 1970-01-01
yyyy-MM-dd HH:mm 1969-12-31 16:00
yyyy-MM-dd HH:mm 1970-01-01 00:00
yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800
yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000
yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800
yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000
我的第二个问题是当我得到一个时区设置为 Z 的日期字符串时。这是将时区设置为 GMT 的标准,相当于 0000。但是我再次收到 ParseException。这是日期字符串的示例。
2011-01-14T10:50:31.520Z
编辑
这是我解析日期字符串的方式..
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = null;
try {
Log.d("CCDateUtilss", "Need to remove the colon from the date string in the timeszone");
date = sdf.parse(string);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date.getTime();
可能的解决方案
我可以通过并替换字符串中出现的问题,以便它正确解析还是有一个我不知道的更优雅的解决方案?
提前致谢