public String getDate(String data) throws ParseException{
// TODO Auto-generated method stub
String datetime = data;
int days = -7;
String rDate="";
SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd");
Date d=df.parse(datetime);
rDate=df.format(new Date(d.getTime() + days * 24 * 60 * 60 * 1000));
return rDate;
}
在上次做项目的时候,老是遇到对日期进行加减运算的程序,因为数据库中的日期都是以String类型保存的。就顺便做了个共通,上面的程序是求当前日期前7天时候的日期。
下面是求当前日期前一周的周一和周日的算法:
上周周一:
public String getDateOfMonday() throws ParseException
{
Date d =new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd");
String da = df.format(new Date(d.getTime() - 7 * 24 * 60 * 60 * 1000));
Calendar cal=Calendar.getInstance();
Date date=df.parse(da);
cal.setTime(date);
int between=cal.get(Calendar.DAY_OF_WEEK)-1;
int subMonday=0;
if (between>=1&&between<=6)
{
subMonday=1-between;
}
else if (between==0)
{
subMonday=-6;
}
cal.add(Calendar.DAY_OF_MONTH,subMonday);
String monday = df.format(cal.getTime());
return monday;
}
上周周日:
public String getDateOfSunday() throws ParseException
{
Date d =new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd");
String da = df.format(new Date(d.getTime() - 7 * 24 * 60 * 60 * 1000));
Calendar cal=Calendar.getInstance();
Date date=df.parse(da);
cal.setTime(date);
int between=cal.get(Calendar.DAY_OF_WEEK)-1;
int subMonday=0;
if (between>=1&&between<=6)
{
subMonday=1-between;
}
else if (between==0)
{
subMonday=-6;
}
cal.add(Calendar.DAY_OF_MONTH,subMonday);
cal.add(Calendar.DAY_OF_MONTH,6);
String sunday = df.format(cal.getTime());
return sunday;
}
这里把时间格式规定成了yyyy/MM/dd的格式,当然也可以适当作出改变,如:
SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd"); 等等。
下面是去当前日期的前7天时候的日期,是Date型日期的运算:
Date nowDate = new Date();
SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd");
GregorianCalendar g = new GregorianCalendar(nowDate.getYear()+ 1900,
nowDate.getMonth(), nowDate.getDate());
g.add(Calendar.DATE, -7);
String ymd = fmt.format(g.getTime());
这样,ymd取得的就是当前日期前7天时候的日期。当然,是Date型转化后的String型。