Сложение или вычитание часов, минут и секунд в Java

Научитесь добавлять или вычитать часы, минуты или секунды из заданной даты и времени в Java, используя различные классы даты и времени. Если вам требуется добавить или вычесть дни и месяцы, прочтите связанную статью.

1. Добавьте или вычтите время с Java 8

Использование нового API Date является рекомендуемым подходом, если мы используем JDK 1.8 или более позднюю версию.

1.1 Основные классы

Следующие классы являются частью нового API, который может хранить и обрабатывать информацию о времени для заданной даты.

Класс Duration представляет количество времени в секундах и наносекундах, и к нему можно получить доступ с помощью других единиц, основанных на длительности, таких как минуты и часы. Мы можем добавлять или вычитать Duration из любого класса выше.

1.2. Добавление часов, минут и секунд

Классы LocalDateTime, ZoneDateTime и OffsetDateTime являются неизменяемым представлением даты-времени с точностью до наносекунд. Эти классы поддерживают методы plus для добавления времени к дате.

  • plusHours(n) : возвращает копию указанного объекта даты и времени с добавленными 'n' часами.
  • plusMinutes(n) : возвращает копию указанного объекта даты и времени с добавленными 'n' минутами.
  • plusSeconds(n) : возвращает копию указанного объекта даты и времени с добавленными 'n' секундами.
  • plusNanos(n) : возвращает копию указанного объекта даты и времени с добавленными 'n' наносекундами.
  • plus(duration) : возвращает копию указанного объекта даты и времени с добавленной указанной длительностью.
  • plus(n, temporalUnit) : возвращает копию указанного объекта даты и времени с добавленным количеством указанных единиц измерения «n».

Программа Java для добавления часов и других единиц времени к заданной дате-времени. Мы пишем примеры с использованием класса LocalDateTime, но все операторы действительны для классов ZoneDateTime и OffsetDateTime.

LocalDateTime updatedTimeLocalDateTime now = LocalDateTime.now();updatedTime = now.plusHours(2);updatedTime = now.plusMinutes(20);updatedTime = now.plusSeconds(300);updatedTime = now.plus(Duration.ofMillis(8000));updatedTime = now.plus(20, ChronoUnit.HOURS);

Класс Instant предназначен для представления даты. Он предназначен для представления одной мгновенной точки на временной шкале или секунд эпохи. Он не предоставляет методы plusHours и plusMinutes.

Instant updatedInstant;Instant currentInstant = Instant.parse("2022-06-24T05:12:35Z");updatedInstant = currentInstant.plus(2, ChronoUnit.HOURS);updatedInstant = currentInstant.plus(30, ChronoUnit.MINUTES);updatedInstant = currentInstant.plusSeconds(300);updatedInstant = currentInstant.plusMillis(8000updatedInstant = currentInstant.plusNanos(60000

1.3 Вычитание часов, минут и секунд

Подобно методам plus, эти классы предоставляют способ вычитать любое количество времени. Нам нужно использовать методы minus, перечисленные выше.

LocalDateTime updatedTimeLocalDateTime now = LocalDateTime.now();updatedTime = now.minusHours(2);updatedTime = now.minusMinutes(20);updatedTime = now.minusSeconds(300);updatedTime = now.minus(Duration.ofMillis(8000));updatedTime = now.minus(20, ChronoUnit.HOURS);

Аналогично для класса Instant мы можем использовать минус-методы.

Instant updatedInstant;Instant currentInstant = Instant.parse("2022-06-24T05:12:35Z");updatedInstant = currentInstant.minus(2, ChronoUnit.HOURS);updatedInstant = currentInstant.minus(30, ChronoUnit.MINUTES);updatedInstant = currentInstant.minusSeconds(300);updatedInstant = currentInstant.minusMillis(8000updatedInstant = currentInstant.minusNanos(600000);

2. Сложение и вычитание времени – Java 7

Добавление и вычитание времени было возможно через класс Calendar. Не было прямой поддержки в классе Date.

Мы можем использовать метод cal.add(unit, amount) для прибавления и вычитания времени.

  • Если сумма была положительным числом, то указанное количество указанной единицы времени добавляется к календарю.
  • Если сумма была отрицательным числом, то указанное количество указанной единицы времени вычитается из календаря.
Date date = new Date();Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.HOUR, 2);cal.add(Calendar.MINUTE, -15);cal.add(Calendar.SECOND, 10);

Обратите внимание, что Calendar — это изменяемый объект, поэтому все изменения вносятся в сам данный экземпляр Calendar. Новый экземпляр Calendar не создается.

3. Заключение

В этом уроке мы научились добавлять и вычитать время(в часах, минутах и секундах) из даты в Java. Мы научились использовать новые API Java Date, а также старые устаревшие классы Date и Calendar.

Исходный код Скачать

Прокрутить вверх