2011-04-27 113 views
7

我想从当前时间获得前一天(24小时)。在Java中减少日期

例如,如果当前时间是Date currentTime = new Date();

2011-04-25 12:15:31:562 GMT

如何确定时间,即

2011-04- 24 12:15:31:562 GMT

回答

25

你可以做,使用Calendar class

Calendar cal = Calendar.getInstance(); 
cal.setTime (date); // convert your date to Calendar object 
int daysToDecrement = -1; 
cal.add(Calendar.DATE, daysToDecrement); 
date = cal.getTime(); // again get back your date object 
10

我会建议你你使用Joda Time开始,这是一个更好的API。然后你可以使用:

DateTime yesterday = new DateTime().minusDays(1); 

注意,“昨天这个时候”并不总是24小时之前虽然...你需要考虑时区等,您可能需要使用LocalDateTimeInstant代替DateTime

+0

快速下载链接 - 外部JAR库:[URL](https://github.com/JodaOrg/joda-time/releases) – 2017-11-13 23:35:06

1

24小时和1全天不一样的东西。但是,你都使用日历:

Calendar c = Calendar.getInstance(); 
c.setTime(new Date()); 
c.add(Calendar.DATE, -1); 
Date d = c.getTime(); 

如果要追溯至24小时,你会用Calendar.HOUR_OF_DAY

1

请结帐此这里:乔达 Java Date vs Calendar

Calendar cal=Calendar.getInstance(); 
cal.setTime(date); //not sure if date.getTime() is needed here 
cal.add(Calendar.DAY_OF_MONTH, -1); 
Date newDate = cal.getTime();