使用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; }