generate dates between two date in Android

2019-04-24 01:20发布

问题:

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"; 

I convert and get dates from these strings.

DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");                                    
DateFormat df2 = new SimpleDateFormat("MMM dd");
String mydate = df2.format(df1.parse(first));

This way I get both dates from first and second String.

Now I also display all dates between these two dates.

回答1:

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);


回答2:

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);


 }
}