Java實現獲取前/後N天,跨度M,的日期/月份期的函式
阿新 • • 發佈:2018-12-31
直接上程式碼,解釋都在程式碼註釋中。
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天的日期遍歷結果集:
------------------------記得關注喲!!!!!!!!