java String,date型日期的运算

来源:互联网 发布:淘宝店装修代码 编辑:程序博客网 时间:2024/05/16 16:09

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

 

 

原创粉丝点击