如何在android中检查所选日期是否比当前日期多8天
我正在开发一项功能,希望选择比当前日期多8天的日期。我已经实施了一个案例,但在某些情况下不起作用。请帮忙 在某些情况下,我得到了错误的数据 //代码相同 //获取开始日期的代码如何在android中检查所选日期是否比当前日期多8天,android,date,Android,Date,我正在开发一项功能,希望选择比当前日期多8天的日期。我已经实施了一个案例,但在某些情况下不起作用。请帮忙 在某些情况下,我得到了错误的数据 //代码相同 //获取开始日期的代码 start_date.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) {
start_date.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
monthOfYear = monthOfYear + 1;
mDay = mDay;
selectedDate = dayOfMonth;
Log.e("TAG", "onDateSet: "+dayOfMonth +"%%"+mDay );
/*date code starts*/
if (dayOfMonth > mDay + 8) {
if (mDay > 20 && monthOfYear == 2) {
if (monthOfYear == 3) {
start_date.setText(dayOfMonth + "-" + (monthOfYear) + "-" + year);
} else {
Toast.makeText(getActivity(), "change your month", Toast.LENGTH_SHORT).show();
}
} else if (mDay > 22 && monthOfYear != 2) {
if (monthOfYear > monthOfYear + 1 && monthOfYear == 12) {
if (monthOfYear == 1 && year == year + 1) {
start_date.setText(dayOfMonth + "-" + (monthOfYear) + "-" + year);
} else {
Toast.makeText(getActivity(), "change year", Toast.LENGTH_SHORT).show();
}
} else if (monthOfYear == monthOfYear + 1) {
start_date.setText(dayOfMonth + "-" + (monthOfYear) + "-" + year);
} else {
Toast.makeText(getActivity(), "select proper month", Toast.LENGTH_SHORT).show();
}
} else {
start_date.setText(dayOfMonth + "-" + (monthOfYear) + "-" + year);
}
} else {
Toast.makeText(getActivity(), getResources().getString(R.string.selectDate8days), Toast.LENGTH_SHORT).show();
}
/*end*/
}
}, mYear, mMonth, mDay);
datePickerDialog.show();
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
这是我已经实现的代码。为了避免月份和年份检查:
long diffInMillisec = currentdate.getTime()-registereddate.getTime();
// Get difference between two dates in days
long diffInDays = diffInMillisec / (24 * 60 * 60 * 1000);
if(diffInDays > 8){
// Here your code from when your current date is greater than 8 days..
}
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date todayStart = cal.getTime();
cal.add(Calendar.DATE, 8);
Date plus8Days = cal.getTime();
cal.add(Calendar.DATE, 1);
Date plus9Days = cal.getTime();
然后在某些情况下只需检查您选择的日期是否介于
加8天
和加9天
之间。在哪些情况下?只需获取今天,添加8,然后检查它是否等于所选日期。查找两个日期的时间戳的差异。如何检查我使用的是非常长的方法。你能告诉我吗@VladMatvienko只需获取今天,添加8,然后检查它是否等于我已经告诉过的选定日期。您还需要检查月份和年份
@VladMatvienko
start_date.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
int myear = year;
int mmonth = monthOfYear + 1;
int mday = dayOfMonth;
String mDate = mday + "/" + mmonth + "/" + myear;
if (show(mDate) > 8) {
Toast.makeText(getActivity(), "Selected date is greater than 8 days", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Selected date is less than 8 days", Toast.LENGTH_SHORT).show();
}
}
}, mYear, mMonth, mDay);
datePickerDialog.show();
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
private int show(String time) {
try {
String outputPattern = "dd/MM/yyyy";
SimpleDateFormat format = new SimpleDateFormat(outputPattern);
Date Date1 = format.parse(getdate());
Date Date2 = format.parse(time);
long mills = Date2.getTime() - Date1.getTime();
long Day1 = mills / (1000 * 60 * 60);
day = (int) Day1 / 24;
} catch (Exception e) {
e.printStackTrace();
}
return day;
}
private String getdate() {
String time = "";
try {
String outputPattern = "dd/MM/yyyy";
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat(outputPattern);
time = df.format(c.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return time;
}