- 5.10. Java примеры – Как добавить временя (дни, годы, секунды) к дате
- Решение
- Результат
- Оглавление
- Добавить часы к дате в Java
- 2. java.util.Дата
- 3. java.time.LocalDateTime/ZonedDateTime
- 4. java.time.Instant
- 5. Apache Commons DateUtils
- 6. Время Джода
- 7. Заключение
- How to add hours to LocalDateTime in Java?
- Adding hours to localdatetime in Java
- Syntax
- Adding hours to the current date and time in Java
- Subtract Hours from Time in Java
5.10. Java примеры – Как добавить временя (дни, годы, секунды) к дате
Как добавить время (дни, годы, секунды) к дате в Java?
Решение
В следующих примерах показано, как добавить время к дате с помощью метода add().
import java.util.*; public class Main < public static void main(String[] args) throws Exception < Date d1 = new Date(); Calendar cl = Calendar. getInstance(); cl.setTime(d1); System.out.println("сегодня " + d1.toString()); cl. add(Calendar.MONTH, 1); System.out.println("дата через месяц будет " + cl.getTime().toString() ); cl. add(Calendar.HOUR, 70); System.out.println("дата после 7 часов будет " + cl.getTime().toString() ); cl. add(Calendar.YEAR, 3); System.out.println("дата через 3 года будет " + cl.getTime().toString() ); >>
Результат
Вышеприведенный пример кода даст следующий результат:
сегодня Mon Jun 22 02:47:02 IST 2009 дата через месяц будет Wed Jul 22 02:47:02 IST 2009 дата после 7 часов будет Wed Jul 22 09:47:02 IST 2009 дата через 3 года будет Sun Jul 22 09:47:02 IST 2012
Оглавление
- 1. Java примеры – Использование кода на практике
- 2. Java примеры – Окружающая среда
- 2.1. Java примеры – Скомпилировать файл
- 2.2. Java примеры – Установить путь к нескольким классам
- 2.3. Java примеры – Отладка java-файла
- 2.4. Java примеры – Установить путь к классу
- 2.5. Java примеры – Просмотреть текущий путь класса
- 2.6. Java примеры – Установить назначение файла класса
- 2.7. Java примеры – Запустить скомпилированный java-файл класса
- 2.8. Java примеры – Узнать версию Java
- 2.9. Java примеры – Установить путь к классу в .jar-файле или .zip-файле
- 3. Java примеры – Строки
- 3.1. Java примеры – Сравнить две строки
- 3.2. Java примеры – Найти последнее вхождение подстроки внутри подстроки
- 3.3. Java примеры – Удалить нужный символ из строки
- 3.4. Java примеры – Заменить символ в строке
- 3.5. Java примеры – Вывод в обратном порядке
- 3.6. Java примеры – Нахождение символа или слова в строке
- 3.7. Java примеры – Разбиение строки на слова и символы
- 3.8. Java примеры – Преобразование строки в верхний регистр
- 3.9. Java примеры – Найти слово в строке
- 3.10. Java примеры – Сравнить производительность создания строки
- 3.11. Java примеры – Оптимизировать создание строк
- 3.12. Java примеры – Форматирование строк
- 3.13. Java примеры – Конкатенация строк
- 3.14. Java примеры – Определить код Юникода символа в строке
- 3.15. Java примеры – Буферизация строк
- 4. Java примеры – Массивы
- 4.1. Java примеры – Сортировка массива и поиск элемента
- 4.2. Java примеры – Метод сортировки массива, вставить элемент в массив
- 4.3. Java примеры – Размер двумерного массива
- 4.4. Java примеры – Обратный порядок массива, переворачиваем массив
- 4.5. Java примеры – Как выводить массивы и двумерные массивы в консоль
- 4.6. Java примеры – Найти максимальный и минимальный элемент массива
- 4.7. Java примеры – Соединить два массива в один
- 4.8. Java примеры – Как заполнить массив числами
- 4.9. Java примеры – Увеличить массив после инициализации
- 4.10. Java примеры – Сравнение двух массивов
- 4.11. Java примеры – Удаление элемента из массива
- 4.12. Java примеры – Удаление массива из другого массива
- 4.13. Java примеры – Одинаковые элементы массивов
- 4.14. Java примеры – Поиск в массиве
- 4.15. Java примеры – Равенство двух массивов
- 4.16. Java примеры – Сравнить массивы
- 5. Java примеры – Дата и время
- 5.1. Java примеры – Форматирование времени в формате AM-PM
- 5.2. Java примеры – Получение названия и номера текущего месяца
- 5.3. Java примеры – Получить текущее время в часах и минутах
- 5.4. Java примеры – Вывести текущее время и дату
- 5.5. Java примеры – Вывести текущее время в 24-часовом формате
- 5.6. Java примеры – Получить текущий месяц
- 5.7. Java примеры – Получить текущие секунды
- 5.8. Java примеры – Получить короткое название месяца
- 5.9. Java примеры – Получить день недели
- 5.10. Java примеры – Добавление времени к дате
- 5.11. Java примеры – Отображение времени в формате другой страны
- 5.12. Java примеры – Отображение времени на разных языках
- 5.13. Java примеры – Прокрутить часы и месяцы
- 5.14. Java примеры – Получить номер недели и месяц в году
- 5.15. Java примеры – Форматы текущей даты
- 6. Java примеры – Методы
- 6.1. Java примеры – Перезагрузка методов
- 6.2. Java примеры – Вывод массива с использованием метода
- 6.3. Java примеры – Решение Ханойской башни
- 6.4. Java примеры – Последовательность чисел Фибоначчи
- 6.5. Java примеры – Вычисление факториала числа
- 6.6. Java примеры – Переопределение метода
- 6.7. Java примеры – Вывод массива с использованием метода
- 6.8. Java примеры – Использование оператора break
- 6.9. Java примеры – Использование оператора continue
- 6.10. Java примеры – Использование метки в методе
- 6.11. Java примеры – Использование операторов enum и switch
- 6.12. Java примеры – Использование конструктора enum
Добавить часы к дате в Java
До Java 8 класс java.util.Date был одним из наиболее часто используемых классов для представления значений даты и времени в Java.
Затем в Java 8 появились java.time.LocalDateTime и java.time.ZonedDateTime. Java 8 также позволяет нам представлять определенное время на временной шкале с помощью java.time.Instant.
В этом руководстве мы научимся прибавлять или вычитать n часов из заданной даты и времени в Java . Сначала мы рассмотрим некоторые стандартные классы Java, связанные с датой и временем, а затем продемонстрируем несколько сторонних вариантов.
Чтобы узнать больше об Java 8 DateTime API, мы бы посоветовали прочитать эту статью .
2. java.util.Дата
Если мы используем Java 7 или более раннюю версию, мы можем использовать классы java.util.Date и java.util.Calendar для большинства операций, связанных с датой и временем.
Давайте посмотрим, как добавить n часов к заданному объекту Date :
public Date addHoursToJavaUtilDate(Date date, int hours) Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.HOUR_OF_DAY, hours); return calendar.getTime(); >
Обратите внимание, что Calendar.HOUR_OF_DAY относится к 24-часовому формату времени .
Приведенный выше метод возвращает новый объект Date , значение которого будет либо (дата + часы) , либо (дата — часы) в зависимости от того, передаем ли мы положительное или отрицательное значение часов соответственно.
Предположим, у нас есть приложение Java 8, но мы все же хотим работать с экземплярами java.util.Date .
В таком случае мы можем выбрать следующий альтернативный подход:
- Используйте метод java.util.Date toInstant() для преобразования объекта Date в экземпляр java.time.Instant.
- Добавьте определенную длительность к объекту java.time.Instant, используя метод plus () .
- Восстановите наш экземпляр java.util.Date , передав объект java.time.Instant методу java.util.Date.from () .
Давайте кратко рассмотрим этот подход:
@Test public void givenJavaUtilDate_whenUsingToInstant_thenAddHours() Date actualDate = new GregorianCalendar(2018, Calendar.JUNE, 25, 5, 0) .getTime(); Date expectedDate = new GregorianCalendar(2018, Calendar.JUNE, 25, 7, 0) .getTime(); assertThat(Date.from(actualDate.toInstant().plus(Duration.ofHours(2)))) .isEqualTo(expectedDate); >
Однако обратите внимание, что всегда рекомендуется использовать новый API DateTime для всех приложений на Java 8 или более поздних версиях.
3. java.time.LocalDateTime/ZonedDateTime
В Java 8 или более поздней версии добавление часов к экземпляру java.time.LocalDateTime или java.time.ZonedDateTime довольно просто и использует метод plusHours() :
@Test public void givenLocalDateTime_whenUsingPlusHours_thenAddHours() LocalDateTime actualDateTime = LocalDateTime .of(2018, Month.JUNE, 25, 5, 0); LocalDateTime expectedDateTime = LocalDateTime. of(2018, Month.JUNE, 25, 10, 0); assertThat(actualDateTime.plusHours(5)).isEqualTo(expectedDateTime); >
Что, если мы хотим вычесть несколько часов?
Передача отрицательного значения часов в метод plusHours() вполне подойдет . Однако рекомендуется использовать метод minusHours() :
@Test public void givenLocalDateTime_whenUsingMinusHours_thenSubtractHours() LocalDateTime actualDateTime = LocalDateTime .of(2018, Month.JUNE, 25, 5, 0); LocalDateTime expectedDateTime = LocalDateTime .of(2018, Month.JUNE, 25, 3, 0); assertThat(actualDateTime.minusHours(2)).isEqualTo(expectedDateTime); >
Методы plusHours() и minusHours() в java.time.ZonedDateTime работают точно так же.
4. java.time.Instant
Как мы знаем, java.time.Instant , представленный в Java 8 DateTime API, представляет определенный момент на временной шкале.
Чтобы добавить несколько часов к объекту Instant , мы можем использовать его метод plus() с java.time.temporal.TemporalAmount :
@Test public void givenInstant_whenUsingAddHoursToInstant_thenAddHours() Instant actualValue = Instant.parse("2018-06-25T05:12:35Z"); Instant expectedValue = Instant.parse("2018-06-25T07:12:35Z"); assertThat(actualValue.plus(2, ChronoUnit.HOURS)) .isEqualTo(expectedValue); >
Точно так же метод minus() можно использовать для вычитания определенного TemporalAmount .
5. Apache Commons DateUtils
Класс DateUtils из библиотеки Apache Commons Lang предоставляет статический метод addHours() :
public static Date addHours(Date date, int amount)
Метод принимает объект java.util.Date вместе с суммой , которую мы хотим добавить к нему, значение которой может быть как положительным, так и отрицательным.
В качестве результата возвращается новый объект java.util.Date :
@Test public void givenJavaUtilDate_whenUsingApacheCommons_thenAddHours() Date actualDate = new GregorianCalendar(2018, Calendar.JUNE, 25, 5, 0) .getTime(); Date expectedDate = new GregorianCalendar(2018, Calendar.JUNE, 25, 7, 0) .getTime(); assertThat(DateUtils.addHours(actualDate, 2)).isEqualTo(expectedDate); >
Последняя версия Apache Commons Lang доступна на Maven Central.
6. Время Джода
Joda Time является альтернативой Java 8 DateTime API и предоставляет собственные реализации DateTime .
Большинство его классов, связанных с DateTime , предоставляют методы plusHours() и minusHours() , которые помогают нам добавлять или вычитать заданное количество часов из объекта DateTime .
Давайте посмотрим на пример:
@Test public void givenJodaDateTime_whenUsingPlusHoursToDateTime_thenAddHours() DateTime actualDateTime = new DateTime(2018, 5, 25, 5, 0); DateTime expectedDateTime = new DateTime(2018, 5, 25, 7, 0); assertThat(actualDateTime.plusHours(2)).isEqualTo(expectedDateTime); >
Мы можем легко проверить последнюю доступную версию Joda Time на Maven Central .
7. Заключение
В этом руководстве мы рассмотрели несколько способов добавления или вычитания заданного количества часов из стандартных значений даты и времени Java.
Мы также рассмотрели некоторые сторонние библиотеки в качестве альтернативы. Как обычно, полный исходный код доступен на GitHub .
How to add hours to LocalDateTime in Java?
To add hours to time in Java, you can use plusHours() method of the LocalDateTime class in Java.
This article introduces how to add hours to localdatetime in Java.
We will add hours to a string date and current date as well. Let’s see the running examples.
Adding hours to localdatetime in Java
If you have a date in String then first parse it using the parse() method to get the localdatetime object.
After that use the plusHours() method to add hours to it.
/* * Code example to add hours to date and time in Java */ import java.time.LocalDateTime; public class JExercise < public static void main(String[] args) < // String date is given String strDate = "2022-03-14T17:28:13.048999208"; // parse the date into date time LocalDateTime date = LocalDateTime.parse(strDate); // Displaying date and time System.out.println("Date : "+date); // Add 2 hours to the date LocalDateTime newDate = date.plusHours(2); // Display result System.out.println("New Date : "+newDate); >>
Date : 2022-03-14T17:28:13.048999208
New Date : 2022-03-14T19:28:13.048999208
If you already have localdatetime object then no need to use the parse() method, just use the plusHours() method directly.
Syntax
The signature of the plusHours() method is as below.
public LocalDateTime plusHours(long hours)
Package Name: java.time;
Class Name: LocalDateTime
Return Value: It returns a copy of localdatetime after adding the specified number of hours, not null.
Parameters: It takes a single long type value. It may be negative.
Exceptions: It throws a DateTimeException if the result exceeds the supported(either MIN or MAX) date range.
This original instance(localdatetime) is immutable and unaffected by this method call.
The LocalDateTime is a class that represents local date and time in Java.
This class consists of year, month, date, hour, minute, second, and nanoseconds. See the below datetime formation.
Adding hours to the current date and time in Java
Here, we used the static now() method of LocalDateTime class to get the current date and time.
After that, we used the plusHours() to add hours to this date.
/* * Code example to add hours to date and time in Java */ import java.time.LocalDateTime; public class JExercise < public static void main(String[] args) < // Current date and time LocalDateTime date = LocalDateTime.now(); // Displaying date and time System.out.println("Date : "+date); // Add 2 hours to the date LocalDateTime newDate = date.plusHours(2); // Display result System.out.println("New Date : "+newDate); >>
Date : 2022-03-14T18:18:18.704649698
New Date : 2022-03-14T20:18:18.704649698
Subtract Hours from Time in Java
The plusHours() method allows negative value as well. So if we passed a negative number then it subtract the hours from the date.
So we can say that if we pass a negative value then it subtracts the hours rather than adding to the date. See the code example below.
/* * Code example to add hours to date and time in Java */ import java.time.LocalDateTime; public class JExercise < public static void main(String[] args) < // String date is given String strDate = "2022-03-14T17:28:13.048999208"; // parse the date into date time LocalDateTime date = LocalDateTime.parse(strDate); // Displaying date and time System.out.println("Date : "+date); // Add 2 hours to the date LocalDateTime newDate = date.plusHours(-2); // Display result System.out.println("New Date : "+newDate); >>
Date : 2022-03-14T17:28:13.048999208
New Date : 2022-03-14T15:28:13.048999208