).

от вопрос уже есть ответ здесь:

Преобразовать метку времени в миллисекундах в форматированное время в Java 9 ответов

У меня есть следующий код в моем приложении

System.out.println(rec.getDateTrami().getTime());

Мне нужно преобразовать следующий формат (я полагаю, что это секунды)

43782000
29382000
29382000

В форматYYYY-MM-DD HH24:MI:SSкто-нибудь может мне помочь?

 Ole V.V.14 дек. 2017 г., 13:32
Есть лиrec.getDateTrami() вернутьDate объект? Спрашивая, потому чтоDate класс давно устарел, и сегодня у нас намного лучшеjava.time, современный API даты и времени Java, Если вы можете изменитьgetDateTrami() чтобы вернуть экземпляр одного из современных классов, вы должны предпочесть это.
 CodeMatrix14 дек. 2017 г., 13:06
ИспользоватьSimpleDateFormat docs.oracle.com/javase/8/docs/api/java/text/...
 Ole V.V.14 дек. 2017 г., 13:50
jc1992, твои цифры действительно не выглядят как секунды в моих глазах, ты уверен? У вас есть картина с датой, которой они должны соответствовать, примерно, примерно через пару лет?
 Ole V.V.14 дек. 2017 г., 13:40
@CodeMatrixSimpleDateFormat это именно тот класс, которого следует избегать. И еще больше, если вы используете Java 8, как указывает ваша ссылка. Независимо от версии Java этот класс проблематичен.
 Ole V.V.14 дек. 2017 г., 13:37
Пожалуйста, ради себя (и для нас тоже), ищите и исследуйте, прежде чем спрашивать. Как форматировать дату и время в Java было рассмотрено во многих местах, как здесь, в Переполнении стека, так и в других местах. Только одно предупреждение, когда вы идете в поиске: избегайте решений, которые упоминаютSimpleDateFormat, Сегодня этот класс давно устарел и, как известно, хлопотно.

Ответы на вопрос(3)

использованиеjava.time

Лучше всего, если вы можете изменитьgetDateTrami() вернутьOffsetDateTime или жеZonedDateTime изjava.time. java.time является современным API даты и времени Java. Он также известен как JSR-310. Код один и тот же, независимо от того, какой из двух упомянутых типов возвращается:

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
    System.out.println(rec.getDateTrami().format(formatter));

Это печатает дату и время как

2017-12-14 16:52:20

java.time как правило, гораздо приятнее работать, чем устаревшееDate класс и его друзья.

Если вы не можете изменить тип возврата

Я предполагаюgetDateTrami() возвращаетjava.util.Date, ПосколькуDate класс давно устарел, первое, что нужно сделать, это преобразовать его вjava.time.Instant, Оттуда вы выполняете ваши дальнейшие операции:

    Date oldfashionedDateObject = rec.getDateTrami();
    ZonedDateTime dateTime = oldfashionedDateObject.toInstant()
            .atZone(ZoneId.of("Atlantic/Cape_Verde"));
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
    System.out.println(dateTime.format(formatter));

Результат похож на вышесказанное, конечно. Я специально дал понять, в каком часовом поясе я хочу интерпретировать момент времени. Пожалуйста, замените свой собственный, если это не Atlantic / Cape_Verde.

Форматирование секунд начиная с эпохи

    int seconds = 29_382_000;
    ZonedDateTime dateTime = Instant.ofEpochSecond(seconds)
            .atZone(ZoneId.of("Atlantic/Cape_Verde"));
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
    System.out.println(dateTime.format(formatter));

Отпечатки этого фрагмента

1970-12-06 23:40:00

Дата в декабре 1970 года. Если это неверно, то это потому, что 29 382 000 не обозначали секунды с эпохи 1 января 1970 года в полночь в UTC, также известной как эпоха Unix. Это самое распространенное время для измерения секунд. Если ваши секунды измеряются от какого-то другого фиксированного момента времени, я не могу угадать, какой, и у вас есть работа, чтобы выяснить это. Снова решите, какой часовой пояс вы хотите указать.

Вы можете использовать SimpledateFormat.

new SimpleDateFormat("YYYY-MM-DD HH24:MI:SS").format(date)
 Ole V.V.14 дек. 2017 г., 13:51
Это не сработает (и вы должны избегать использованияSimpleDateFormat).

SimpleDateFormat

Пример:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = new Date();
date.setTime(rec.getDateTrami().getTime());
System.out.println(format.format(date));

Документация:SimpleDateFormat, Формат даты

 Ole V.V.14 дек. 2017 г., 13:34
Пожалуйста, не учите детей пользоваться устаревшими и печально известными хлопотами.SimpleDateFormat класс. Сегодня у нас намного лучшеjava.time, современный API даты и времени Java, Даже если вам нужно преобразовать из старомодногоDate объект первым.

Ваш ответ на вопрос