Как определить дату за день до указанной даты на Java?
Я предполагаю, что Java имеет встроенный способ сделать это.
Учитывая дату, как я могу определить дату за день до этой даты?
Например, предположим, что мне дано 3/1/2009. Предыдущая дата - 28.02.2009. Если бы мне дали 3/1/2008, предыдущая дата была бы 2/29/2008.
Ответы
Ответ 1
Используйте интерфейс "Календарь".
Calendar cal = Calendar.getInstance();
cal.setTime(myDate);
cal.add(Calendar.DAY_OF_YEAR,-1);
Date oneDayBefore= cal.getTime();
Выполнение "добавления" таким образом гарантирует, что вы получите действительную дату. Это действительно для 1-го числа года, например, если myDate
- 1 января 2012 года, oneDayBefore
будет 31 декабря 2011 года.
Ответ 2
Вы также можете использовать Joda-Time, очень хорошую библиотеку Java для управления датами:
DateTime result = dt.minusDays(1);
Ответ 3
Класс java.util.Calendar позволяет нам добавлять или вычитать любое количество дней/недель/месяцев/независимо от даты. Просто используйте метод add():
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html
Пример:
Calendar date = new GregorianCalendar(2009, 3, 1);
date.add(Calendar.DATE, -1);
Ответ 4
С библиотекой date4j:
DateTime yesterday = today.minusDays(1);
Ответ 5
Это поможет.
getPreviousDateForGivenDate("2015-01-19", 10);
getPreviousDateForGivenDate("2015-01-19", -10);
public static String getPreviousDateForGivenDate(String givenDate, int datesPriorOrAfter) {
String saleDate = getPreviousDate(datesPriorOrAfter);
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String[] arr = givenDate.split("-", 3);
Calendar cal = new GregorianCalendar(Integer.parseInt(arr[0]), Integer.parseInt(arr[1])-1, Integer.parseInt(arr[2]));
cal.add(Calendar.DAY_OF_YEAR, datesPriorOrAfter);
saleDate = dateFormat.format(cal.getTime());
} catch (Exception e) {
System.out.println("Error at getPreviousDateForGivenDate():"+e.getMessage());
}
return saleDate;
}
Ответ 6
import java.util.Calendar;
import java.util.GregorianCalendar;
import static java.util.Calendar.*;
public class TestDayBefore {
public static void main(String... args) {
Calendar calendar = GregorianCalendar.getInstance();
calendar.set(YEAR, 2009);
calendar.set(MONTH, MARCH);
calendar.set(DAY_OF_MONTH, 1);
System.out.println(calendar.getTime()); //prints Sun Mar 01 23:20:20 EET 2009
calendar.add(DAY_OF_MONTH, -1);
System.out.println(calendar.getTime()); //prints Sat Feb 28 23:21:01 EET 2009
}
}