1. 程式人生 > >Java實現獲取前/後N天,跨度M,的日期/月份期的函式

Java實現獲取前/後N天,跨度M,的日期/月份期的函式

直接上程式碼,解釋都在程式碼註釋中。

public class test01 {


    public static void main(String[] args){
        test01 t=new test01();
        ArrayList<String> resultlist=new ArrayList<String>();

        //這裡使用main函式來測試,根據type引數來選擇呼叫對應的方法。
        String type="month";
        if("month".equals(type)){
            resultlist=t.handleMonths(6,2);//前推2月便記錄一個月份,記錄6個為止
        }else{
            resultlist=t.handleDays(7,1);//得到過去7天的日期
        }
        //遍歷結果集,列印。
        for (String str : resultlist) {
            System.out.println("date/month="+str);
        }

    }

    /**
     * 根據days、span得到過去的days個日期,這days個相鄰日期之間的跨度為span。(每隔span天,記錄一個日期)
     * @param days(結果集中得到日期的數量)
     * @param span(結果集中相鄰日期之間的跨度)
     * @return ArrayList<String>
     */
    public ArrayList<String> handleDays(int days,int span){
        ArrayList<String> datelist = new ArrayList<String>();

        SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date();

        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);

        //把日期後推一天.(正數往後推,負數往前移動),這樣得到的結果就是從前一天往後排列。如果想帶上今天,就不需要。
        calendar.add(calendar.DATE,-1);
        date=calendar.getTime();
        datelist.add(dateformat.format(date));//得到"yyyy-MM-dd"的日期格式的字串

        for(int i=0,l=days-1;i<l;i++){
            calendar.setTime(date);
            calendar.add(calendar.DATE,-span);//把日期減去span天.(隔span天,記錄一次)
            date=calendar.getTime();
            String dateString = dateformat.format(date);//轉化成想要的日期格式
            datelist.add(dateString);
        }
        return datelist;
    }

    /**
     * 根據months、span得到過去的months個日期,這months個相鄰日期之間的跨度為span。(每隔span月,記錄一個月份)
     * @param months(結果集中得到月份的數量)
     * @param span(結果集中相鄰月份之間的跨度)
     * @return ArrayList<String>
     */
    public ArrayList<String> handleMonths(int months,int span){
        ArrayList<String> monthlist = new ArrayList<String>();

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
        Date date = new Date();

        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        calendar.add(calendar.MONTH,-1);//把日期的月份數減一.(正數往後推,負數往前移)
        date=calendar.getTime();//得到對應的日期
        monthlist.add(formatter.format(date));//得到"yyyy-MM"的日期格式的字串

        for(int i=0,l=months-1;i<l;i++){
            calendar.setTime(date);
            calendar.add(calendar.MONTH,-span);//把日期的月份減少跨度月數(span),每隔span月,記錄一次
            date=calendar.getTime();
            String dateString = formatter.format(date);
            monthlist.add(dateString);
        }
        return monthlist;
    }

    //注意:這兩個方法完全可以構造為一個公用的方法,但為了講解,所以分解為兩個方法。

}

這裡給出main函式中兩個型別結果的示例,以便參考。

handleMonths(6,2);//前推2月便記錄一個月份,記錄6個為止
遍歷結果集:

handleDays(7,1);//得到過去7天的日期
遍歷結果集:


------------------------記得關注喲!!!!!!!!