我有一个日期作为字符串,格式如下“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对象?


当前回答

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

其他回答

使用DateTimeFormat:

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

您也可以使用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();
}

一个简单的方法:

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

    return dateRetour;
}

我知道这是一个老问题,但我想补充一点,从JodaTime 2.0开始,你可以用一行程序来完成:

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

您需要一个适合于所使用格式的DateTimeFormatter。看看文档中关于如何构建一个的说明。

我认为你需要format = DateTimeFormat。forPattern(“M / d / y H: M: s”)