我假設Java有一些內置的方法來做到這一點。如何確定Java中給定日期之前一天的日期?
給定一個日期,如何確定該日期前一天的日期?
例如,假設我給了3/1/2009。之前的日期是2/28/2009。如果我在2008年3月1日前得到了,那麼以前的日期應該是2/29/2008。
我假設Java有一些內置的方法來做到這一點。如何確定Java中給定日期之前一天的日期?
給定一個日期,如何確定該日期前一天的日期?
例如,假設我給了3/1/2009。之前的日期是2/28/2009。如果我在2008年3月1日前得到了,那麼以前的日期應該是2/29/2008。
使用日曆界面。
Calendar cal = Calendar.getInstance();
cal.setTime(myDate);
cal.add(Calendar.DAY_OF_YEAR,-1);
Date oneDayBefore= cal.getTime();
以這種方式做「添加」可以保證您獲得有效的日期。這一年也是有效的,例如如果myDate
是2012年1月1日,oneDayBefore
將是2011年12月31日。
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);
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
}
}
您還可以使用Joda-Time,有很好的Java庫來操縱日期:
DateTime result = dt.minusDays(1);
隨着date4j庫:
DateTime yesterday = today.minusDays(1);
這會有所幫助。
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;
}
提示建議喬達時間的答案數量超過/少於3.5。我會接管。 – 2009-04-13 21:16:30
sleep(-86400); Date.getDate()? :-) – Tanktalus 2009-04-13 21:16:50