问题
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);
}
}
来源:https://stackoverflow.com/questions/11412713/generate-dates-between-two-date-in-android