У меня есть объект даты Java:
Date currentDate = new Date();
Это даст текущую дату и время. Пример:
Thu Jan 12 10:17:47 GMT 2012
Вместо этого я хочу получить дату, изменив ее на один час назад, чтобы получить:
Thu Jan 12 09:17:47 GMT 2012
Как лучше всего это сделать?
mktime
эквивалент в Java? вычесть из него 60 минут?Ответы:
java.util.Calendar
java.util.Date
org.joda.time.LocalDateTime
Java 8: java.time.LocalDateTime
Java 8 java.time.Instant
источник
Подобно решению @Sumit Jain
или
источник
Date currentDate = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(10));
Это должно быть на 10 минут позже ?ТЛ; др
В UTC :
Или зонированные:
Использование java.time
В Java 8 и более поздних версиях встроен новый фреймворк java.time .
Instant
Если вас интересует только UTC (GMT), используйте
Instant
класс.Выгрузить в консоль.
Обратите внимание, как в этот момент случилось вернуться к вчерашней дате.
ZonedDateTime
Если вам важен часовой пояс, используйте
ZonedDateTime
класс. Вы можете начать с Instant и назначить часовой пояс,ZoneId
объект. Этот класс обрабатывает необходимые настройки для аномалий, таких как переход на летнее время (DST) .Выгрузить в консоль.
преобразование
Старые классы java.util.Date/.Calendar теперь устарели. Избежать их. Они заведомо неприятны и сбивают с толку.
Если вам необходимо использовать старые классы для работы со старым кодом, еще не обновленным для типов java.time, вызовите методы преобразования. Вот пример кода, переходящего от Instant или ZonedDateTime к java.util.Date.
…или…
О java.time
Java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять неприятные старые устаревшие классы даты и времени , такие как
java.util.Date
,Calendar
, иSimpleDateFormat
.Проект Joda-Time , находящийся сейчас в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поищите в Stack Overflow множество примеров и объяснений. Спецификация - JSR 310 .
Вы можете обмениваться объектами java.time напрямую с вашей базой данных. Используйте драйвер JDBC, совместимый с JDBC 4.2 или новее. Нет необходимости в строках, нет необходимости в
java.sql.*
занятиях.Где взять классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является испытательной площадкой для возможных будущих дополнений к java.time. Вы можете найти некоторые полезные классы здесь , такие как
Interval
,YearWeek
,YearQuarter
, и более .источник
Используйте Календарь .
источник
Или используя знаменитую библиотеку Joda Time :
источник
Просто отнимите от даты количество миллисекунд в часе.
currentDate.setTime(currentDate.getTime() - 3600 * 1000));
источник
Вы можете использовать приведенный ниже код для даты и времени:
Вывод :
Эта ссылка хороша: см. Здесь
И смотри: смотри тоже
И: Здесь
И: Здесь
И: Здесь
Если вам нужно только время:
источник
Этого можно добиться с помощью
java.util.Date
. Следующий код вычитает 1 час из вашей даты.Точно так же вычитаем 20 секунд из даты
источник
Получите время в миллисекундах, минус ваши минуты в миллисекундах и преобразуйте его в дату. Здесь нужно объективировать одного !!!
источник
У меня это сработало вместо формата. Для работы со временем просто используйте методы parse и toString ()
Строка localTime = "6:11"; LocalTime localTime = LocalTime.parse (местное время)
LocalTime lt = 6:11; localTime = lt.toString ()
источник