У меня очень простой вопрос - я прочитал пару тем здесь, но так и не понял, как получить простую вещь. Я хочу отправить строку в метод и вернуть дату joda. У меня не было проблем с его сборкой, но формат возврата 2015-03-11T17:13:09:000+01:00. Как я могу получить желаемый формат (например, ммм-дд чч: мм) из нижеприведенного метода (это должно быть дата и время для целей сортировки в форме FX)? Я попытался сыграть с другим dateTimeFormatter, но мне не повезло. заранее большое спасибо
public static DateTime stringToDateTime(String textDate) throws ParseException
{
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS");
DateTime jodaTime = dateTimeFormatter.parseDateTime(textDate);
return jodaTime;
}
Ответ 1 · FlasH from Ru
Что вы подразумеваете под "форматом возврата"? Термин "формат" здесь может относиться только к строковому представлению объекта DateTime. Это означает, что вы должны указать формат вашей входной строки (то, что вы уже сделали в своем коде) - и будет создан соответствующий объект DateTime. После этого вы, вероятно, используете toString() для проверки результатов, но DateTime.toString() использует формат ISO8601 (гггг-ММ-ддTHH:мм:сс.SSSZZ) в соответствии с JavaDoc - это даст вам результат 2015-03-11T17:13:09:000+01:00.
Итак, чтобы получить желаемое, вы можете попробовать использовать метод toString(String pattern) с нужным вам форматом. Но еще раз - это просто выходной формат для преобразования DateTime в String, он не влияет на дату и время, хранящиеся в вашем объекте DateTime.
Ответ 2 · Black_Buster
Я просто использую объект календаря, так что это возможный способ сделать это:
static String stringToDateTime(String textDate) {
Calendar c = new GregorianCalendar();
// How you want the input to be formatted
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = df.parse(textDate);
c.setTime(date);
} catch (ParseException e) {
e.printStackTrace();
}
// How do you want to print your date
df= new SimpleDateFormat("dd-MM-yy");
return df.format(c.getTime());
}
// input
String myDate = "2015-04-15 14:25:25";
System.out.println(stringToDateTime(myDate));