Atom DateFormat的Java解析器和格式化程序

时间:2012-12-11 11:40:25

标签: java jodatime date-format

是否有Atom日期的日期格式设置工具。

根据此链接: http://tools.ietf.org/html/rfc4287

   Such date values happen to be compatible with the following
   specifications: [ISO.8601.1988], [W3C.NOTE-datetime-19980827], and
   [W3C.REC-xmlschema-2-20041028].

   Example Date constructs:

   <updated>2003-12-13T18:30:02Z</updated>
   <updated>2003-12-13T18:30:02.25Z</updated>
   <updated>2003-12-13T18:30:02+01:00</updated>
   <updated>2003-12-13T18:30:02.25+01:00</updated>

我尝试使用Joda ISODateTimeFormat.dateTime();,但似乎在没有毫秒的情况下它不会处理解析(例如2003-12-13T18:30:02Z)。

解析所有这些日期格式的最简单方法是什么?

3 个答案:

答案 0 :(得分:1)

似乎是xml dateTime。然后最好的选择是javax.xml.datatype.XMLGregorianCalendar。

DatatypeFactory f = DatatypeFactory.newInstance();
XMLGregorianCalendar xgc = f.newXMLGregorianCalendar("2003-12-13T18:30:02.25Z");
System.out.println(xgc);
System.out.println(xgc.toGregorianCalendar().getTime());

输出

2003-12-13T18:30:02.25Z
Sat Dec 13 20:30:02 EET 2003

在API

中查看更多内容

答案 1 :(得分:1)

这是ISO 8601格式,例如XML中使用的标准格式。 Joda Time非常支持这种格式,您可以将这些字符串传递给DateTime的构造函数:

DateTime timestamp = new DateTime("2003-12-13T18:30:02Z");

如果字符串中没有毫秒,也可以正常工作。

答案 2 :(得分:0)

来自Apache Commons / Lang的

DateUtils有一个parseDate method that supports multiple patterns。这可能对你有用。 (模式必须根据SimpleDateFormat语法格式化)