我想转换这种日期格式:
2014-04-23T14:20:00.000-07:00
进入日期对象,以便我可以使用此方法来获得差异:
DateUtils.getDateDifference(DATE_OBJECT);
...
我尝试过使用' SimpleDateFormat'但它抛出异常,多次检查代码,但不起作用:
String pubDate = "2014-04-23T14:20:00.000-07:00";
SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss Z", Locale.ENGLISH);
try {
Date pDate = df.parse(pubDate);
pubDate = "This post was published " + DateUtils.getDateDifference(pDate);
} catch (ParseException e) {
Log.e("DATE PARSING", "Error parsing date..");
pubDate = "Couldn't be retrieved.";
}
成功实现它的最简单方法是什么?
答案 0 :(得分:2)
根据Android文档(@MarcoAcierno评论中给出的链接),您需要符号Z五次来解析时区偏移量。请注意,在Java-6中,没有用于处理偏移部分中冒号的内置解决方案,但Java-7引入了新符号X(此处三次:XXX)。 (Android!= Java)的另一个例子。所以最终的模式如下:
SimpleDateFormat sdf =
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ");
java.util.Date d = sdf.parse("2014-04-23T14:20:00.000-07:00");
不需要指定区域设置,因为您的格式不包含任何语言或区域敏感部分(仅为纯ISO格式)。
答案 1 :(得分:0)
如果您使用了优秀的Joda-Time库而不是臭名昭着的java.util.Date和SimpleTextFormat类,则可以将该标准ISO 8601字符串直接传递给DateTime构造函数。 Joda-Time使用ISO 8601作为默认值。
DateTime dateTime = new DateTime( pubDate );