您的位置:首页 > 编程语言 > Java开发

java String,date型日期的运算

2009-08-31 11:22 78 查看
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型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: