java String,date型日期的运算

    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型。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值