从给定的字符串表示初始化java中的日期对象



我正在尝试导入一个表示日期的给定字符串,格式为:

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)可以实现这一点。如果需要,还有另一种方法可用于解析自定义日期格式。

最新更新