Преобразование строки даты в объект DateTime с использованием библиотеки времени Joda

У меня есть дата в виде строки в следующем формате "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?

Ответ 1

Используйте DateTimeFormat:

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

Ответ 2

Я знаю, что это старый вопрос, но я хотел добавить, что с JodaTime 2.0 вы можете сделать это с помощью однострочного интерфейса:

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

Здесь сообщение в блоге Я написал о преобразовании в/из объектов JodaTime.

Ответ 3

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

Ответ 4

Из комментариев я выбрал ответ вроде, а также добавив 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);

Ответ 5

Ваш формат не соответствует формату ISO, вы должны попробовать

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

Ответ 6

Вы также можете использовать 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();
}

Ответ 7

Вам нужен DateTimeFormatter, соответствующий формату, который вы используете. Взгляните на документы, чтобы узнать, как их построить.

С помощью манжеты, мне кажется, вам нужно format = DateTimeFormat.forPattern("M/d/y H:m:s")

Ответ 8

Простой метод:

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

    return dateRetour;
}