我正在尝试导入一个表示日期的给定字符串,格式为:
2007-03-12T00:00:00.000+01:00
现在要创建一个新的日期对象,我使用Joda Library,使用:
DateTime date = new DateTime(year, month, day, hour, minute, second);
然而,我想在这里确定两件事:
- 如何在这种日期时间上下文中处理GTM+1
- 不管怎样,我不必解析这个字符串,并且Date对象可以直接用这个字符串初始化
DateTime date = DateTime.parse("2007-03-12T00:00:00.000+01:00");
正如其他答案中所提到的,根据文档,偏移量应该与字符串的其余部分一起解析。
您可以使用SimpleDateFormat
解析该日期字符串,然后将该日期传递到Joda类中:
String dateStr = "2007-03-12T00:00:00.000+01:00";
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = sdf.parse( dateStr.replaceAll(":(?=..$)", "")); // remove last colon
请注意,您必须删除最后一个冒号,这样偏移量就是像+0100
一样的RFC 822时区,我使用String.replaceAll()
这两个问题都可以通过阅读类的文档来回答
时区由类处理。查找采用时区参数的构造函数。
是的,您可以使用字符串创建DateTime对象。parse(String)可以实现这一点。如果需要,还有另一种方法可用于解析自定义日期格式。