获取指定时间往前推n天或者往后推n天
有两种时间格式,一种是yyyy-MM-dd,一种是yyyy-MM-dd HH:mm:ss
第一种:yyyy-MM-dd
/**
* 指定时间往前或往后推n天
*
* @param specifiedDay 指定时间
* @param x 指定天数
* @return
*/
public String getDayBefore(String specifiedDay, int x) {
Calendar c = Calendar.getInstance();
Date date = null;
try {
date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(date);
int day = c.get(Calendar.DATE);
c.set(Calendar.DATE, day - x); //往前推几天
//c.set(Calendar.DATE, day + x); 往后推几天
String dayBefore = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
return dayBefore;
}
第二种:yyyy-MM-dd HH:mm:ss
/**
* 指定时间往前或往后几天
* @param time 指定时间
* @param day 天数
* @return
*/
public static String getTimeBeforeDay(String time, int day) {
Calendar c = Calendar.getInstance();
Date date = null;
try {
date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(date);
int minute = c.get(Calendar.DAY_OF_MONTH);
c.set(Calendar.DAY_OF_MONTH, minute - day); //往前推几天
//c.set(Calendar.DAY_OF_MONTH, minute + day); 往后推几天
String dayafter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime());
return dayafter;
}
同理:往前或者往后推几分钟或几小时跟第二种方式是一样的,只需要把 Calendar.DAY_OF_MONTH 换成 Calendar.MINUTE 或者 Calendar.HOUR,具体可以看Calendar类的源码,里面有详细的多种方法可以使用
其中:Calendar.DATE:获取日期,包含年月日
Calendar.DAY_OF_MONTH :获取月份中的某一天
Calendar.MINUTE:获取某一分钟
Calendar.HOUR:获取某一小时