Java String to DateTime

我有一个来自json响应的字符串:

start: "2013-09-18T20:40:00+0000", end: "2013-09-18T21:39:00+0000", 

如何将此字符串转换为java DateTime对象?

我尝试过使用以下内容:

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); start = sdf.parse("2013-09-18T20:40:00+0000"); 

但有了这个,我只能创建一个日期对象。 但是在String中绑定的时间是必不可少的。

任何帮助是极大的赞赏!

您可以从Java Date对象创建Joda DateTime对象,因为Java没有DateTime类。

 DateTime dt = new DateTime(start.getTime()); 

虽然Java的Date类也包含时间信息(这就是你首先需要的),但我建议你使用Calendar而不是Java的Date类。

 Calendar myCal = new GregorianCalendar(); myCal.setTime(date); 

有关如何更有效地使用它的更多信息,请查看日历文档。


事情发生了变化,现在甚至Java(准确地说是Java 8)都有一个LocalDateTime和ZonedDateTime类。 对于转换,您可以查看此SO答案 (从那里发布摘录)。

鉴于: Date date = [some date]

(1)LocalDateTime << Instant << Date

 Instant instant = Instant.ofEpochMilli(date.getTime()); LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneOffset.UTC); 

(2)日期<< Instant << LocalDateTime

 Instant instant = ldt.toInstant(ZoneOffset.UTC); Date date = Date.from(instant); 

您不需要DateTime对象。 java.util.Date存储时间。

 int hours = start.getHours(); //returns the hours int minutes = start.getMinutes(); //returns the minutes int seconds = start.getSeconds(); //returns the seconds 

正如RJ所说,这些方法已被弃用,因此您可以使用java.util.Calendar类:

 Calendar calendar = Calendar.getInstance(); calendar.setTime(sdf.parse("2013-09-18T20:40:00+0000")); int hour = calendar.get(Calendar.HOUR); //returns the hour int minute = calendar.get(Calendar.MINUTE); //returns the minute int second = calendar.get(Calendar.SECOND); //returns the second 

注意:在我的结尾, sdf.parse("2013-09-18T20:40:00+0000")会触发

 java.text.ParseException: Unparseable date: "2013-09-18T20:40:00+0000" at java.text.DateFormat.parse(DateFormat.java:357) at MainClass.main(MainClass.java:16) 

您可以使用DateTimeFormatter

 DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); DateTime time = format.parseDateTime("2013-09-18T20:40:00+0000");