我有一个日期作为字符串,格式如下“04/02/2011 20:27:05”。我正在使用Joda-Time库,并想将其转换为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"
如何将上述日期转换为DateTime对象?
我有一个日期作为字符串,格式如下“04/02/2011 20:27:05”。我正在使用Joda-Time库,并想将其转换为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"
如何将上述日期转换为DateTime对象?
当前回答
从评论中我选择了一个类似的答案,并添加了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();
}
从评论中我选择了一个类似的答案,并添加了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);
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss").parseDateTime("04/02/2011 20:27:05");
我知道这是一个老问题,但我想补充一点,从JodaTime 2.0开始,你可以用一行程序来完成:
DateTime date = DateTime.parse("04/02/2011 20:27:05",
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss"));
您的格式不是期望的ISO格式,您应该尝试一下
DateTimeFormatter format = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime time = format.parseDateTime("04/02/2011 20:27:05");