从给定的字符串表示形式初始化java中的Date对象

时间:2012-09-03 02:21:14

标签: java date datetime jodatime

我正在尝试以以下格式导入代表Date的给定字符串:

2007-03-12T00:00:00.000+01:00 

现在创建一个新的Date对象我使用Joda Library:

DateTime date = new DateTime(year, month, day, hour, minute, second);

但是,我想在这里确定两件事:

  • 如何在此日期时间上下文中处理GTM +1?
  • 无论如何,    我不必解析这个字符串,日期对象可以    直接用这个字符串初始化?

3 个答案:

答案 0 :(得分:6)

DateTime date = DateTime.parse("2007-03-12T00:00:00.000+01:00");

正如其他答案中所提到的,根据文档,偏移应该与字符串的其余部分一起解析。

答案 1 :(得分:2)

您可以使用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 time zone,如+0100,我使用String.replaceAll()

答案 2 :(得分:-1)

您可以通过阅读课程的documentation来回答您的问题

时区由班级处理。查找带有时区参数的constructor

是的,您可以使用字符串创建DateTime对象。 DateTime.parse(String)可以执行此操作。如果需要,还可以使用另一个method来解析自定义日期格式。