一个函数,要求输入开始日期和结束日期,返回间隔的每一天的日期(ArrayList)。如参数是20090908,20090912。返回值则是20090908,20090909,20090910,20090911,20090908组成的一个List.List<String> getDates(String startTime,String endTime){}

解决方案 »

  1.   

    SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
    String begin = "20090908";
    String end = "20090909";
    Date beginDate = df.parse(begin);
    Date endDate = df.parse(end);Calendar c = Calendar.getInstance();
    c.setTime(begin);List<String> list = new ArrayList<String>();while(c.before(end)){
        list.add(df.format(c.getTime());
        c.add(Calendar.DAY_OF_MONTH,1);
    }
      

  2.   

    好像没有什么算法
    public class TestDay
    {    /**
         * @param args
         */
        public static void main(String[] args)
        {
            System.out.println(getDates("20090502", "20090506").toString());    }    private static List<String> getDates(String startTime, String endTime)
        {
            List list = new ArrayList();
            int start = Integer.parseInt(startTime);
            int end = Integer.parseInt(endTime);
            for (int i = start; i <= end; i++)
            {
                list.add(String.valueOf(i));
            }
            return list;    }
    }
      

  3.   


    public List<String> getDates(String startTime, String endTime)
    throws Exception {
    List<String> rs = new ArrayList<String>();
    DateFormat df = new SimpleDateFormat("yyyyMMdd");
    Date begin = df.parse(startTime);
    Date end = df.parse(endTime);
    long d = (end.getTime() - begin.getTime()) / (1000 * 60 * 60 * 24);
    Calendar c = Calendar.getInstance();
    c.setTime(begin);
    for (int i = 1; i <= d + 1; i++) {
    rs.add(df.format(c.getTime()));
    c.add(Calendar.DATE, 1);
    }
    return rs;
    }
      

  4.   

    package test;import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;public class TestGetDates {    private TestGetDates() {
        }    private static TestGetDates instance = null;    public static synchronized TestGetDates getInstance() {
            if (instance == null) {
                instance = new TestGetDates();
            }
            return instance;
        }       List <String> getDates(String startTime,String endTime){        
            List<String> list =new ArrayList<String>();
            try {
                Date start = new SimpleDateFormat("yyyyMMdd").parse(startTime);
                Date end = new SimpleDateFormat("yyyyMMdd").parse(endTime);        
                while(start.getTime() <= end.getTime()){
                    list.add(new SimpleDateFormat("yyyyMMdd").format(start));                
                    start = new Date(start.getTime() + 24*60*60*1000);
                }
                
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return list;    } 
        
        public static void main(String[] args) throws Exception {
            List <String> list=TestGetDates.getInstance().getDates("20091121", "20091203");
            for(int i=0;i<list.size();i++){
                System.out.println(list.get(i));
            }
        }
    }
      

  5.   


    List <String> getDates(String startTime,String endTime){ 
    int k;
    int i=Integer.parseInt(startTime);
    int j=Integer.parseInt(endTime);
    for(k=i;k<=j;k++)
      {
        System.out.println(k);
       }
      

  6.   


    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;public class test {
     
    List <String> getDates(String startTime,String endTime){ //20090908,20090912
    List list = null;

    DateFormat df = new SimpleDateFormat("yyyyMMdd");

    try {
    Date startDate = df.parse(startTime);
    Date endDate = df.parse(endTime);

    list = new ArrayList();
    int n = test.daysBetweenDates(startDate, endDate);
    for(int i=0;i<=n;i++) {
    System.out.println(df.format(test.getDateBetween(startDate, i)));
    list.add(df.format(test.getDateBetween(startDate, i)));
    }

    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return null;
    }
    return list;


      /**
         * 计算日期间隔的天数
         * @param beginDate 开始日期
         * @param endDate 结束日期
         * @return
         * @pre beginDate != null
         */
        private static int daysBetweenDates(Date beginDate, Date endDate)
        {
            int days = 0;
            Calendar calo = Calendar.getInstance();
            Calendar caln = Calendar.getInstance();
            calo.setTime(beginDate);
            caln.setTime(endDate);
            int oday = calo.get(6);
            int nyear = caln.get(1);
            for (int oyear = calo.get(1); nyear > oyear;)
            {
                calo.set(2, 11);
                calo.set(5, 31);
                days += calo.get(6);
                oyear++;
                calo.set(1, oyear);
            }        int nday = caln.get(6);
            days = (days + nday) - oday;
            return days;
        }    /**
         * 计算间隔天数后的日期
         * @param date
         * @param intBetween
         * @return
         * @pre date != null
         */
        private static Date getDateBetween(Date date, int intBetween)
        {
            Calendar calo = Calendar.getInstance();
            calo.setTime(date);
            calo.add(Calendar.DATE, intBetween);
            return calo.getTime();
        }
        
        public static void main(String[] args) {
    new test().getDates("20090908", "20090912");


     
    }}
    挺笨的一个方法,不过能用
      

  7.   

    public class DateTest { /**
     * @param args
     */
    public static void main(String[] args)throws Exception {
    System.out.println(getDateList("20090817","20090923")); } private static List<String> getDateList(String startTime, String endTime)throws Exception
        {
            List list = new ArrayList();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); 
            Date start = sdf.parse(startTime);
            Date end = sdf.parse(endTime);
            
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(start);
            while(start.before(end)){
             list.add(sdf.format(start));
             calendar.add(Calendar.DATE, 1);
             start = calendar.getTime();
            }
            return list;    }}
      

  8.   

    public static void main(String[] args) {
    getDates("2008/05/26", "2009/08/01");
    } public static ArrayList<String> getDates(String startTime, String endTime) {
    ArrayList<String> list = new ArrayList<String>();
    Date d = new Date();
    String dateFormatString = "yyyy/MM/dd";
    SimpleDateFormat format = new SimpleDateFormat(dateFormatString); Date newDate = null;
    try {
    newDate = format.parse(startTime);
    while(newDate.toLocaleString().compareTo(endTime)<0){
    int day = newDate.getDate()+1;
    newDate.setDate(day);
    System.out.println(newDate.toLocaleString());
    list.add(newDate.toLocaleString());
    }

    } catch (ParseException e) {
    // TODO Auto-generated catch blockj
    e.printStackTrace();
    }
    return list;
    }
      

  9.   

    思路是这样的: 先把字符串转换为date型,求出2日期的格林治时间,然后for循环,起始时间为start+24*3600*1000,然后结束时间为end,条件递增为24*3600*1000,此时求出格林治时间,在转换为date日期型,即可
      

  10.   

    package test;import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;public class TestTime { /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
    // TODO Auto-generated method stub
    String startTime = "20090908";
    String endTime = "20090910";
    getTime(startTime, endTime);
    }

    private static void getTime(String startTime,String endTime) throws Exception
    {
    DateFormat df = new SimpleDateFormat("yyyyMMdd");
    long start = df.parse(startTime).getTime();
    long end = df.parse(endTime).getTime();
    for(long i = start+1000*24*3600;i< end;i=i+(1000*24*3600))
    {
    List<String> list = new ArrayList<String>();
    Date date = new Date();
    date.setTime(i);
    String da = df.format(date);
    list.add(da);
    }
    }
    }
      

  11.   

    import java.text.DateFormat; 
    import java.text.SimpleDateFormat; 
    import java.util.ArrayList; 
    import java.util.Date; 
    import java.util.List; public class TestTime { /** 
    * @param args 
    * @throws Exception 
    */ 
    public static void main(String[] args) throws Exception { 
    // TODO Auto-generated method stub 
    String startTime = "20090908"; 
    String endTime = "20090910"; 
    getTime(startTime, endTime); 
    } private static void getTime(String startTime,String endTime) throws Exception 

    DateFormat df = new SimpleDateFormat("yyyyMMdd"); 
    long start = df.parse(startTime).getTime(); 
    long end = df.parse(endTime).getTime(); 
    for(long i = start+1000*24*3600;i < end;i=i+(1000*24*3600)) 

    List <String> list = new ArrayList <String>(); 
    Date date = new Date(); 
    date.setTime(i); 
    String da = df.format(date); 
    list.add(da); 


      

  12.   

    可以实现跨月:
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;
    public class dd {

    private List test1(String startTime,String endTime) {

    List <String> list = new ArrayList <String>(); 

    try {
    DateFormat df = new SimpleDateFormat("yyyyMMdd"); 
    long start = df.parse(startTime).getTime(); 
    long end = df.parse(endTime).getTime(); 
    for(long i = start;i < end+(1000*24*3600);i=i+(1000*24*3600)) 


    Date date = new Date(); 
    date.setTime(i); 
    String da = df.format(date); 
    list.add(da); 
    }
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();


    return list;

    }
    public static void main(String[] args) {
    dd t = new dd();
    List l = t.test1("20091129", "20091205");
    for (int i = 0; i < l.size(); i++) {
    System.out.println(l.get(i));
    }
    }
    }