日期加减 简单方法
String time= "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
Calendar cal = Calendar.getInstance();
Date date = new Date();
//按时
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, -i);//-代表前面 i代表当前时间的前面或后面 i 个小时
time= sdf.format(cal.getTime()); 得到当前日期的 前面 或 后面 i 个小时
//按天
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, -i);
time= sdf.format(cal.getTime());
//按周
cal.add(Calendar.WEEK_OF_MONTH, -i);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
time= sdf.format(cal.getTime());
//按月
cal.setTime(date);
cal.add(Calendar.MONTH, -i);
time= sdf.format(cal.getTime());
//引用高人的 未测试 应该可以用
private static int weeks = 0;
// 获得当前日期与本周一相差的天数
private int getMondayPlus() {
Calendar cd = Calendar.getInstance();
// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == 1) {
return -6;
} else {
return 2 - dayOfWeek;
}
}
// 获得上周星期一的日期
public String getPreviousMonday() {
weeks--;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preMonday;
}
// 获得本周星期一的日期
public String getCurrentMonday() {
weeks = 0;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preMonday;
}
// 获得下周星期一的日期
public String getNextMonday() {
weeks++;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preMonday;
}
// 获得相应周的周日的日期
public String getSunday() {
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preMonday;
}
//获取当前日期 是在一年中的第几周
public static String getWEEK_OF_YEAR(Date myDate){
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(myDate);
return calendar.get(Calendar.WEEK_OF_YEAR)+"";
}
//根据周得到这周的第一天 日期
public static String calFirstDayOfTheYear(int year,int week){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar calFirstDayOfTheYear = new GregorianCalendar(year,Calendar.JANUARY, 1);
calFirstDayOfTheYear.add(Calendar.DATE, 7 * (week-1));
int dayOfWeek = calFirstDayOfTheYear.get(Calendar.DAY_OF_WEEK);
Calendar calFirstDayInWeek = (Calendar)calFirstDayOfTheYear.clone();
calFirstDayInWeek.add(Calendar.DATE, calFirstDayOfTheYear.getActualMinimum(Calendar.DAY_OF_WEEK) - dayOfWeek + 1);
Date firstDayInWeek = calFirstDayInWeek.getTime();
return df.format(firstDayInWeek);
}
//根据周得到这周的最后一天 日期
public static String calFirstDayOfTheYear1(int year,int week){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar calFirstDayOfTheYear = new GregorianCalendar(year,Calendar.JANUARY, 1);
calFirstDayOfTheYear.add(Calendar.DATE, 7 * (week-1));
int dayOfWeek = calFirstDayOfTheYear.get(Calendar.DAY_OF_WEEK);
Calendar calLastDayInWeek = (Calendar)calFirstDayOfTheYear.clone();
calLastDayInWeek.add(Calendar.DATE,calFirstDayOfTheYear.getActualMaximum(Calendar.DAY_OF_WEEK) - dayOfWeek + 1);
Date lastDayInWeek = calLastDayInWeek.getTime();
return df.format(lastDayInWeek);
}