generate dates between two date in Android

后端 未结 2 1188
面向向阳花
面向向阳花 2021-02-20 17:38

How to get all dates between two dates in Android.

For example. I have two Strings.

String first=\"2012-07-15\";  
String second=\"2012-07-21\"; 


        
相关标签:
2条回答
  • 2021-02-20 18:11
    public class DummyWorks extends Activity 
    {
    static final long ONE_DAY = 24 * 60 * 60 * 1000L;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        getDatesBetween("03/23/2011","03/28/2011");
    }
    
    public static void getDatesBetween(String startDate,String endDate) {
    
    
        long  from=Date.parse(startDate);  
    
        long to=Date.parse(endDate);  
    
        int x=0;
    
        while(from <= to) {
              x=x+1;
              System.out.println ("Dates  : "+new Date(from));
              from += ONE_DAY;
        }
        System.out.println ("No of Dates  :"+ x);
    
    
     }
    }
    
    0 讨论(0)
  • 2021-02-20 18:27

    it is better not to use any hardcoded values in date calculations. we can rely on java Calendar class methods to do this task

    see the code

    private static List<Date> getDates(String dateString1, String dateString2)
    {
        ArrayList<Date> dates = new ArrayList<Date>();
        DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
    
        Date date1 = null;
        Date date2 = null;
    
        try {
            date1 = df1 .parse(dateString1);
            date2 = df1 .parse(dateString2);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(date1);
    
    
        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(date2);
    
        while(!cal1.after(cal2))
        {
            dates.add(cal1.getTime());
            cal1.add(Calendar.DATE, 1);
        }
        return dates;
    }
    

    and use it as below

        List<Date> dates = getDates("2012-02-01", "2012-03-01");
        for(Date date:dates)
            System.out.println(date);
    
    0 讨论(0)
提交回复
热议问题