我正在尝试以以下格式导入表示日期的给定字符串:
2007-03-12T00:00:00.000+01:00
现在要创建一个新的日期对象,我使用 Joda Library 使用:
DateTime date = new DateTime(year, month, day, hour, minute, second);
但是,我想在这里确保两件事:
- 如何在此日期时间上下文中处理 GTM +1?
- 无论如何,我不必解析这个字符串,并且可以直接用这个字符串初始化日期对象?
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
请注意,您必须删除最后一个冒号,以便偏移量是RFC 822 时区,例如+0100
,我使用String.replaceAll()
您的两个问题都可以通过阅读课程文档来回答
时区由类处理。寻找采用时区参数的构造函数。
是的,您可以使用字符串创建 DateTime 对象。DateTime.parse(String)可用于执行此操作。如果需要,还有另一种方法可用于解析自定义日期格式。