Java calendar вычитание дат

Дата Java добавляет дни, дата java вычитает дни, календарь java добавляет дни, календарь java вычитает дни, дата java + 1 день, минус 1 день пример. Григорианский календарь

Иногда, работая над датой Java, нам нужно добавить или вычесть из нее несколько дней. Здесь я привожу пример java для добавления дней к дате java или вычитания дней из объекта даты java.

Дата Java Добавляет Дни и Вычитает дни

Ниже приведен пример простой программы для Java Date add days и вычитания дней.

package com.journaldev.util; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class JavaDateAddSubtract < public static void main(String[] args) < Date date = new Date(); System.out.println("Today's date: "+date.toString()); //test addDays method int i=10; while(i<=50)< Date newDate = addDays(date, i); System.out.println("Java Date after adding "+i+" days: "+newDate.toString()); i+=10; >System.out.println("\n\n"); //test subtractDays method i=10; while(i <=50)< Date newDate = subtractDays(date, i); System.out.println("Java Date after subtracting "+i+" days: "+newDate.toString()); i+=10; >> /** * add days to date in java * @param date * @param days * @return */ public static Date addDays(Date date, int days) < GregorianCalendar cal = new GregorianCalendar(); cal.setTime(date); cal.add(Calendar.DATE, days); return cal.getTime(); >/** * subtract days to date in java * @param date * @param days * @return */ public static Date subtractDays(Date date, int days) < GregorianCalendar cal = new GregorianCalendar(); cal.setTime(date); cal.add(Calendar.DATE, -days); return cal.getTime(); >>

Результатом приведенной выше программы является:

Today's date: Thu Nov 15 11:45:05 PST 2012 Java Date after adding 10 days: Sun Nov 25 11:45:05 PST 2012 Java Date after adding 20 days: Wed Dec 05 11:45:05 PST 2012 Java Date after adding 30 days: Sat Dec 15 11:45:05 PST 2012 Java Date after adding 40 days: Tue Dec 25 11:45:05 PST 2012 Java Date after adding 50 days: Fri Jan 04 11:45:05 PST 2013 Java Date after subtracting 10 days: Mon Nov 05 11:45:05 PST 2012 Java Date after subtracting 20 days: Fri Oct 26 11:45:05 PDT 2012 Java Date after subtracting 30 days: Tue Oct 16 11:45:05 PDT 2012 Java Date after subtracting 40 days: Sat Oct 06 11:45:05 PDT 2012 Java Date after subtracting 50 days: Wed Sep 26 11:45:05 PDT 2012

Вы можете использовать эти служебные функции для добавления или вычитания дней в объект даты Java.

Читайте также:  Оформление формы css шаблоны

Обновление : Java 8 представила API даты и времени, который предоставляет служебный метод для добавления и вычитания дней, недель, месяцев и т.д. Из заданной даты. Вы должны проверить это в Учебнике Java Date API .

Источник

Add or Subtract Days, Months & Years to Date in Java

Java examples to add or subtract days, months or years from a given date using various date-time classes. If your requirement is to add or subtract only the business days then read the linked article.

1. Add or Subtract Days, Months, Years to Date since Java 8

This recommended approach if we are using JDK 1.8 or later.

New java.time classes LocalDate , LocalDateTime and ZonedDateTime have following plus methods to add days to a date.

  • plusDays(long n) – adds n days to date.
  • plusWeeks(long n) – adds n weeks to date.
  • plusMonths(long n) – adds n months to date.
  • plusYears(long n) – adds n years to date.

Similarly, use the following minus methods to subtract days from a date.

  • minusDays(long n) – subtracts n days from date.
  • minusWeeks(long n) – subtracts n weeks from date.
  • minusMonths(long n) – subtracts n months from date.
  • minusYears(long n) – subtracts n years from date.

Before returning the modified date, these methods modify the other date fields as well to ensure that the result date is a valid date.

These methods throw DateTimeException if the result exceeds the supported date range.

//1. Add and substract 1 day from LocalDate LocalDate today = LocalDate.now(); //Today LocalDate tomorrow = today.plusDays(1); //Plus 1 day LocalDate yesterday = today.minusDays(1); //Minus 1 day //2. Add and substract 1 month from LocalDateTime LocalDateTime now = LocalDateTime.now(); //Current Date and Time LocalDateTime sameDayNextMonth = now.plusMonths(1); //2018-08-14 LocalDateTime sameDayLastMonth = now.minusMonths(1); //2018-06-14 //3. Add and substract 1 year from LocalDateTime LocalDateTime sameDayNextYear = now.plusYears(1); //2019-07-14 LocalDateTime sameDayLastYear = now.minusYears(1); //2017-07-14

2. Add or Subtract Days from java.util.Date

Till Java 7, the only good way to add days to Date was using Calendar class.

The calendar.add(int field, int amount) method takes two arguments, i.e., field type and the field value. We can use this method to add days, months or any time unit in the underlying Date class.

  • To add a time unit, pass a positive number in the method.
  • To subtract a time unit, pass a negative number in the method.
Date today = new Date(); System.out.println(today); Calendar cal = Calendar.getInstance(); cal.setTime(today); // Adding time cal.add(Calendar.YEAR, 2); cal.add(Calendar.MONTH, 2); cal.add(Calendar.DATE, 2); cal.add(Calendar.DAY_OF_MONTH, 2); // Subtracting time cal.add(Calendar.YEAR, -3); cal.add(Calendar.MONTH, -3); cal.add(Calendar.DATE, -3); cal.add(Calendar.DAY_OF_MONTH, -3); // convert calendar to date Date modifiedDate = cal.getTime(); System.out.println(modifiedDate); 

Источник

Читайте также:  Java string replace placeholder

Вычесть дни из даты в Java

В этом руководстве мы познакомимся с различными способами вычитания дней из объекта Date в Java.

Мы начнем с использования Date Time API, представленного в Java 8. После этого мы узнаем, как это сделать, используя классы из пакета java.util , и, наконец, добьемся того же с помощью с помощью библиотеки Joda-Time .

2. java.time.LocalDateTime ​

API даты/времени, представленный в Java 8, в настоящее время является наиболее жизнеспособным вариантом для вычисления даты и времени.

Давайте посмотрим, как вычесть дни из объекта java.util.LocalDateTime в Java 8 :

 @Test   public void givenLocalDate_whenSubtractingFiveDays_dateIsChangedCorrectly()    LocalDateTime localDateTime = LocalDateTime.of(2022, 4, 20, 0, 0);    localDateTime = localDateTime.minusDays(5);    assertEquals(15, localDateTime.getDayOfMonth());   assertEquals(4, localDateTime.getMonthValue());   assertEquals(2022, localDateTime.getYear());   > 

3. java.util.Календарь ​

Date и Calendar из java.util являются наиболее часто используемыми служебными классами до Java 8 для операций с датами.

Давайте вычтем пять дней из даты, используя java.util.Calendar :

 @Test   public void givenCalendarDate_whenSubtractingFiveDays_dateIsChangedCorrectly()    Calendar calendar = Calendar.getInstance();   calendar.set(2022, Calendar.APRIL, 20);    calendar.add(Calendar.DATE, -5);    assertEquals(15, calendar.get(Calendar.DAY_OF_MONTH));   assertEquals(Calendar.APRIL, calendar.get(Calendar.MONTH));   assertEquals(2022, calendar.get(Calendar.YEAR));   > 

Мы должны быть осторожны при их использовании, поскольку они имеют несколько конструктивных недостатков и не являются потокобезопасными.

Подробнее о взаимодействии с унаследованным кодом и различиях между двумя API мы можем прочитать в статье о миграции на новый Java 8 Date Time API .

4. Джода-Время​

Мы можем использовать Joda-Time как лучшую альтернативу исходному решению Java для обработки даты и времени. Библиотека предоставляет более интуитивно понятный API, несколько календарных систем, безопасность потоков и неизменяемые объекты.

Чтобы использовать Joda-Time , нам нужно включить его как зависимость в файл pom.xml :

 dependency>   groupId>joda-timegroupId>   artifactId>joda-timeartifactId>   version>2.10.14version>   dependency> 

Давайте вычтем пять дней из объекта DateTime Joda-Time :

 @Test   public void givenJodaDateTime_whenSubtractingFiveDays_dateIsChangedCorrectly()    DateTime dateTime = new DateTime(2022, 4, 20, 12, 0, 0);    dateTime = dateTime.minusDays(5);    assertEquals(15, dateTime.getDayOfMonth());   assertEquals(4, dateTime.getMonthOfYear());   assertEquals(2022, dateTime.getYear());   > 

Joda-Time — хорошее решение для устаревшего кода. Однако проект официально «завершен», и автор библиотеки рекомендует переход на Java 8 Date/Time API.

5. Вывод​

В этой короткой статье мы рассмотрели несколько способов вычитания дней из объекта даты.

Мы достигли этого, используя java.time.LocalDateTime и решения до Java 8: java.util.Calendar и библиотеку Joda-Time.

Как обычно, исходный код доступен на GitHub .

Источник

Java Add/subtract years, months, days, hours, minutes, or seconds to a Date & Time

Java Add/subtract years, months, days, hours, minutes, or seconds to a Date & Time

In this article, you’ll find several ways of adding or subtracting years, months, days, hours, minutes, or seconds to a Date in Java.

Add/Subtract years, months, days, hours, minutes, seconds to a Date using Calendar class

import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class CalendarAddSubtractExample  public static void main(String[] args)  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); System.out.println("Current Date " + dateFormat.format(date)); // Convert Date to Calendar Calendar c = Calendar.getInstance(); c.setTime(date); // Perform addition/subtraction c.add(Calendar.YEAR, 2); c.add(Calendar.MONTH, 1); c.add(Calendar.DATE, -10); c.add(Calendar.HOUR, -4); c.add(Calendar.MINUTE, 30); c.add(Calendar.SECOND, 50); // Convert calendar back to Date Date currentDatePlusOne = c.getTime(); System.out.println("Updated Date " + dateFormat.format(currentDatePlusOne)); > >
# Output Current Date 2020-02-24 19:35:00 Updated Date 2022-03-14 16:05:50

Add/Subtract years, months, weeks, days, hours, minutes, seconds to LocalDateTime

import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; public class LocalDateTimeAddSubtractExample  public static void main(String[] args)  LocalDateTime dateTime = LocalDateTime.of(2020, 1, 26, 10, 30, 45); // Add years, months, weeks, days, hours, minutes, seconds to LocalDateTime LocalDateTime newDateTime = dateTime.plusYears(3).plusMonths(1).plusWeeks(4).plusDays(2).plusHours(2); System.out.println(newDateTime); // Subtract years, months, weeks, days, hours, minutes, seconds to LocalDateTime newDateTime = dateTime.minusYears(3).minusMonths(1).minusWeeks(4).minusDays(2).minusMinutes(30); System.out.println(newDateTime); // Add/Subtract using the generic plus/minus method System.out.println(dateTime.plus(2, ChronoUnit.DAYS)); > >
# Output 2023-03-28T12:30:45 2016-11-26T10:00:45 2020-01-28T10:30:45

Add/Subtract days, weeks, months, years to LocalDate

import java.time.LocalDate; import java.time.temporal.ChronoUnit; public class LocalDateAddSubtractExample  public static void main(String[] args)  LocalDate date = LocalDate.of(2020, 1, 26); // Add years, months, weeks, days to LocalDate LocalDate newDate = date.plusYears(3).plusMonths(1).plusWeeks(4).plusDays(2); System.out.println(newDate); // Subtract years, months, weeks, days to LocalDate newDate = date.minusYears(3).minusMonths(1).minusWeeks(4).minusDays(2); System.out.println(newDate); // Add/Subtract using the generic plus/minus method System.out.println(date.plus(2, ChronoUnit.DAYS)); > >
2023-03-28 2016-11-26 2020-01-28

Add/Subtract hours, minutes, seconds to LocalTime

import java.time.LocalTime; import java.time.temporal.ChronoUnit; public class LocalTimeAddSubtractExample  public static void main(String[] args)  LocalTime time = LocalTime.of(11, 45, 20); // Add hours, minutes, or seconds LocalTime newTime = time.plusHours(2).plusMinutes(30).plusSeconds(80); System.out.println(newTime); // Subtract hours, minutes, or seconds LocalTime updatedTime = time.minusHours(2).minusMinutes(30).minusSeconds(30); System.out.println(updatedTime); // Add/Subtract using the generic plus/minus method System.out.println(time.plus(1, ChronoUnit.HOURS)); > >
# Output 14:16:40 09:14:50 12:45:20

Источник

Оцените статью