使用Joda时间库将datestring转换为DateTime对象

我有一个datestring,格式如下"04/02/2011 20:27:05" 。 我正在使用乔达时间库,并希望将其转换为DateTime对象。 我做了:

 DateTime dt = new DateTime("04/02/2011 20:27:05") 

但是我收到以下错误:

 Invalid format: "04/02/2011 14:42:17" is malformed at "/02/2011 14:42:17" 

如何将上述date转换为DateTime对象?

使用DateTimeFormat

 DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss"); DateTime dt = formatter.parseDateTime(string); 

我知道这是一个古老的问题,但我想补充一点,就像JodaTime 2.0一样,你可以用一行代码来做到这一点:

 DateTime date = DateTime.parse("04/02/2011 20:27:05", DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss")); 

这是我写的有关从JodaTime对象转换的博文。

 DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss").parseDateTime("04/02/2011 20:27:05"); 

你的格式不是预期的ISO格式,你应该试试

 DateTimeFormatter format = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss"); DateTime time = format.parseDateTime("04/02/2011 20:27:05"); 

从评论中我select了一个类似的答案,也join了TimeZone:

 String dateTime = "2015-07-18T13:32:56.971-0400"; DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ") .withLocale(Locale.ROOT) .withChronology(ISOChronology.getInstanceUTC()); DateTime dt = formatter.parseDateTime(dateTime); 

您也可以使用SimpleDateFormat ,如在DateTimeFormat

 Date startDate = null; Date endDate = null; try { if (validDateStart!= null) startDate = new SimpleDateFormat("MM/dd/yyyy HH:mm", Locale.ENGLISH).parse(validDateStart + " " + validDateStartTime); if (validDateEnd!= null) endDate = new SimpleDateFormat("MM/dd/yyyy HH:mm", Locale.ENGLISH).parse(validDateEnd + " " + validDateEndTime); } catch (ParseException e) { e.printStackTrace(); } 

您需要一个适合您所用格式的DateTimeFormatter 。 看看文档中的指导如何build立一个。

closures袖口,我认为你需要format = DateTimeFormat.forPattern("M/d/y H:m:s")

一个简单的方法:

 public static DateTime transfStringToDateTime(String dateParam, Session session) throws NotesException { DateTime dateRetour; dateRetour = session.createDateTime(dateParam); return dateRetour; }