Формат возврата метода анализа времени joda

У меня очень простой вопрос - я прочитал пару тем здесь, но так и не понял, как получить простую вещь. Я хочу отправить строку в метод и вернуть дату 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;
}

person Cavas    schedule 15.04.2015    source источник


Ответы (2)


Что вы подразумеваете под «форматом возврата»? Термин «формат» здесь может относиться только к строковому представлению объекта DateTime. Это означает, что вы должны указать формат вашей входной строки (то, что вы уже сделали в своем коде) - и будет создан соответствующий объект DateTime. После этого вы, вероятно, используете toString() для проверки результатов, но DateTime.toString() использует формат ISO8601 (гггг-ММ-ддTHH:мм:сс.SSSZZ) в соответствии с JavaDoc — это даст вам результат 2015-03-11T17:13:09:000+01:00.

Итак, чтобы получить желаемое, вы можете попробовать использовать метод toString(String pattern) с нужным вам форматом. Но еще раз - это просто выходной формат для преобразования DateTime в String, он не влияет на дату и время, хранящиеся в вашем объекте DateTime.

person FlasH from Ru    schedule 15.04.2015
comment
Привет, вспышка. Спасибо за ваш отзыв. Я постараюсь описать немного больше всей настройки. Я загружаю данные в набор записей из базы данных MS SQL, этот конкретный столбец имеет формат DateTime. Я зацикливаю набор записей, этот столбец как DateFormater.stringToDateTime(rs.getString(Date_Sent) - используя описанный выше метод. Затем он привязывается в контроллере моей формы, разработанной в построителе сцен, как @FXML private TableColumn‹Email, DateTime› emailReceivedColumn и emailReceivedColumn.setCellValueFactory(new PropertyValueFactory(dateReceived)). Я не могу переопределить toString, не могли бы вы подробнее объяснить свое предложение? Спасибо! - person Cavas; 16.04.2015
comment
Я не знаком с javaFX, но мне кажется, что вы действительно можете переопределить формат для столбца - используйте фабрики ячеек. См. stackoverflow.com/questions/10147325/set-font -in-javafx/ Т.е. насколько я понимаю, вы должны определить свою собственную фабрику ячеек и реализовать свой собственный метод updateItem(..) для печати DateTime в правильном формате. - person FlasH from Ru; 16.04.2015
comment
привет еще раз Флэш. Я посмотрю на это, я только начинаю с Java, поэтому вещи, которые могут показаться мне очень простыми, такие как изменение формата даты, в конце концов, являются довольно сложными вещами. - person Cavas; 16.04.2015

Я просто использую объект календаря, так что это возможный способ сделать это:

    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));
person Black_Buster    schedule 15.04.2015