在Java中解析XML dateTime的最佳方法是什么?
在Java中解析XML dateTime的最佳方法是什么?法定日期时间值包括 2002-10-10T12:00:00-05:00 和 2002-10-10T17:00:00Z
有没有一个好的开源库,我可以使用,或者我应该使用SimpleDateFormat或类似的来滚动我自己的库?
在Java中解析XML dateTime的最佳方法是什么?法定日期时间值包括 2002-10-10T12:00:00-05:00 和 2002-10-10T17:00:00Z
有没有一个好的开源库,我可以使用,或者我应该使用SimpleDateFormat或类似的来滚动我自己的库?
我想你想要来自Joda Time的ISODateTimeFormat.dateTimeNoMillis()。
总的来说,我强烈建议你远离Java中内置的日期/日历类。Joda Time的设计要好得多,更喜欢不可变性(特别是格式化程序是不可变的和线程安全的),并且是Java 7中新的日期/时间API的基础。
示例代码:
import org.joda.time.*;
import org.joda.time.format.*;
class Test
{
public static void main(String[] args)
{
parse("2002-10-10T12:00:00-05:00");
parse("2002-10-10T17:00:00Z");
}
private static final DateTimeFormatter XML_DATE_TIME_FORMAT =
ISODateTimeFormat.dateTimeNoMillis();
private static final DateTimeFormatter CHECKING_FORMAT =
ISODateTimeFormat.dateTime().withZone(DateTimeZone.UTC);
static void parse(String text)
{
System.out.println("Parsing: " + text);
DateTime dt = XML_DATE_TIME_FORMAT.parseDateTime(text);
System.out.println("Parsed to: " + CHECKING_FORMAT.print(dt));
}
}
输出:
Parsing: 2002-10-10T12:00:00-05:00
Parsed to: 2002-10-10T17:00:00.000Z
Parsing: 2002-10-10T17:00:00Z
Parsed to: 2002-10-10T17:00:00.000Z
(请注意,在输出中,两者最终都为相同的UTC时间。格式化的输出使用 UTC,因为我们要求它在调用时这样做。withZone