TL; др
myJavaUtilDate.toInstant()
.atOffset(ZoneOffset.UTC)
.format(DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss"))
Избегайте унаследованное даты и время занятия
Вы используете хлопотно старые классы даты и время, теперь наследство, вытесняли классы java.time.
Instant
Преобразования старого java.util.Date
объекта в java.time.Instant
, вызвав новый метод, добавленным к старому классу.
Instant instant = myJavaUtilDate.toInstant() ;
Округление
Если вы хотите изменить значение самих данных уронить долю секунды, вы можете укоротить. Классы java.time используют immutable objects, поэтому мы генерируем новый объект, а не изменяем (мутируем) оригинал.
Instant instantTruncated = instant.truncatedTo(ChronoUnit.SECONDS);
Генерация строки
Если вместо усечения вы просто хотите, чтобы подавить отображение дробных секунд при создании строки, представляющей значение даты и времени, определить форматчик в соответствии с вашими потребностями.
Например, «uuuu-MM-dd HH: mm: ss» не упоминает дробную секунду, поэтому любые миллисекунды, содержащиеся в данных, просто не отображаются в сгенерированной строке.
Преобразование Instant
в OffsetDateTime
для более гибкого форматирования.
DateTimeFormatter f = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
OffsetDateTime odt = instant.atOffset(ZoneOffset.UTC)
String output = odt.format(f);
Часовой пояс
Обратите внимание, что ваш вопрос игнорирует вопрос о временной зоне. Если вы намеревались использовать UTC, приведенный выше код работает как Date
, так и Instant
в UTC по определению. Если вместо этого вы хотите воспринимать данные с помощью линзы какого-либо региона wall-clock time, примените часовой пояс. Поиск переполнения стека для ZoneId
и ZonedDateTime
имена классов для получения дополнительной информации.
дата не имеет значения. Покажите нам ** код форматирования **. –
Объект даты представляет длинные миллисекунды, вы не можете разделить его на 1000 и просто показать час .. Возможно, вам нужно пройти документацию – sanbhat
Я считаю, что они хотели использовать 'date.setTime (Math.round (time/1000) * 1000); '(см. Ответ ниже) –