Как я могу вернуть объект Date на 4 часа меньше текущего системного времени в Java?
Получить данные от 4 часов назад
Ответ 1
Один из самых простых способов:
Date date = new Date(System.currentTimeMillis() - (4 * 60 * 60 * 1000));
Однако это не учитывает DST (переход на летнее время). Альтернативой является Calendar
:
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -4);
Date date = calendar.getTime();
Это, однако, довольно уродливый API. Альтернативой является JodaTime:
DateTime dateTime = new DateTime().minusHours(4);
Date date = dateTime.toDate(); // If you ever need this...
Ответ 2
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -4);
calendar.getTime();
Ответ 3
Другие ответы верны, но я хотел бы внести современный ответ. В современном решении используется java.time
современный API дат и времени Java.
Instant fourHoursAgo = Instant.now().minus(Duration.ofHours(4));
System.out.println(fourHoursAgo);
Это только что напечатано:
2018-01-31T15:22:21.113710Z
В конце Z
указано, что время печатается в формате UTC - при нулевом сдвиге UTC, если вы это сделаете. Класс Instant
является современной заменой Date
, поэтому я рекомендую вам придерживаться этого. Современный API, как правило, гораздо удобнее работать с таким чище, настолько лучше разработан.
Обратите внимание на преимущества предоставления классу библиотеки вычитания для вас 4 часа: код становится более понятным и менее подвержен ошибкам. Никаких смешных констант, и никакие читатели не берут время, чтобы проверить, правильны ли они.
Если вам нужен старомодный объект Date
, например, при использовании устаревшего API, который вы не можете изменить или не хотите изменять, выполните следующие действия:
Date oldfashionedDate = Date.from(fourHoursAgo);
Ссылка: Учебная тропа Oracle: время по времени. Конечно, есть и другие ресурсы в Интернете, пожалуйста, ищите.
Ответ 4
Преобразуйте его в миллисекунды, вычтите количество миллисекунд за 4 часа, преобразуйте его обратно в дату.
Ответ 5
Calendar c = Calendar.getInstance();
c.add(Calendar.HOUR_OF_DAY, -4);
java.util.Date d = c.getTime();
System.out.println(d);
Ответ 6
Calendar c =Calendar.getInstance() ;
c.add(Calendar.HOUR,-4);
Date d = c.getTime();
Ответ 7
Используйте объект Calendar
и метод add
.
calendar.add(Calendar.HOUR, -4);
См. http://download.oracle.com/javase/6/docs/api/java/util/Calendar.html