欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java,

来源: javaer 分享于  点击 15184 次 点评:49

java,


今天有时间写一个计算两个日期之间有多少个日期,在这儿献丑了。呵呵,不说废话了,请看源码:

//获取某段日期之间的日期集合
    public static List<String> getDateStringListByBetweenTwoDates(String beginDate,String endDate){
        List<String> dateList = new ArrayList<String>();
        int maxRound = 366;//hardcode
        int round = 0;
        String nextDate = beginDate;
        dateList.add(nextDate);
        while ((nextDate != null && !nextDate.equals(endDate)) && round++ < maxRound){
            nextDate = DateStringAdd(nextDate, 1);
            dateList.add(nextDate);
        }
        return dateList;
    }

public static String DateStringAdd(String dateString, int add){
        String sret = "";
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
        if (dateString == null)
            return null;
        if (add == 0)
            return dateString;
        if (!dateString.startsWith("1") && !dateString.startsWith("2"))
            return null;
        if(add <0)
            return null;
        try {
            Date date = sf.parse(dateString);
            int year = date.getYear()+1900;
            int month = date.getMonth()+1;
            int day = date.getDate();
            switch(month){
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                    if(day+add>31){
                        month++;
                        day=1;
                    }else{
                        day=day+add;
                    }
                    break;
                case 12:
                    if(month==12 && day+add>31){
                        year++;
                        month=1;
                        day=1;
                    }else{
                        day=day+add;
                    }
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    if(day+add>30){
                        month++;
                        day=1;
                    }else{
                        day=day+add;
                    }
                    break;
                case 2:
                    if(year%400==0||(year%4==0 && year%100!=0)){
                        if(day+add>29){
                            month++;
                            day=1;
                        }else{
                            day=day+add;
                        }
                    }else{
                        if(day+add>28){
                            month++;
                            day=1;
                        }else{
                            day=day+add;
                        }
                    }
                    break;
            }
            if(month<10){
                sret = year+"-0"+month;
            }else{
                sret = year+"-"+month;
            }
            if(day<10){
                sret = sret+"-0"+day;
            }else{
                sret = sret+"-"+day;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
       
        return sret;
    }

相关文章

    暂无相关文章
相关栏目:

用户点评