在这里,我尝试了一些............................有些人帮助。当我尝试从那些字段中读取日期时,它会抛出错误..
private void CalculateDates1() {//this functio is to calculate dates from the text fields
DateRange = new ArrayList<String>();
boolean loopVal = true;
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
Calendar calendar = Calendar.getInstance();
String str=ETFROM.getText().toString();
String str1=ETTO.getText().toString();
// textView is the TextView view that should display it
String StartDate = formatter.format(str);
String EndDate = formatter.format(str1);
DateRange.add(StartDate);
Date date =null;
try {
while (loopVal) {
date = formatter.parse(StartDate);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
if (StartDate.equals(EndDate)) {
loopVal = false;
} else {
calendar.add(Calendar.DATE, 1);
StartDate = formatter.format(cal.getTime());
DateRange.add(StartDate);
}
可以帮助任何人.....
答案 0 :(得分:0)
您会收到错误,因为您在格式化程序中传递的日期格式与您在SimpleDateFormat中定义的格式不同。你必须传递你在简单日期格式中定义的相同格式,然后它将格式化日期。
然后,获取开始日期和结束日期之间所有日期的其他解决方案使用以下函数。
public ArrayList<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;
}
注意:确保日期的传递参数与我在SimpleDateFormat中设置的相同,否则无论您想要传递哪种格式的格式替换为SimpleDateFormat