我试图在日期和时间上保持约束。我希望如果用户尝试将日期设置为小于当前日期,那么它应该显示警报,同样的事情是按时完成。我使用的是日期和时间选择器,我的onDateSetListener
和onTimeSetListener
如下:
DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
dateTime.set(Calendar.YEAR, year);
dateTime.set(Calendar.MONTH, monthOfYear);
dateTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);
update_date_display();
// ---for setting notification----
day = dayOfMonth;
month = monthOfYear;
AddEditTask.year = year;
c.set(year, month, day);
}
};
protected void update_date_display() {
et_task_date.setText(formatDate.format(dateTime.getTime()));
}
TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
dateTime.set(Calendar.HOUR_OF_DAY, hourOfDay);
dateTime.set(Calendar.MINUTE, minute);
update_time_display();
// ---for setting notification---
hour = hourOfDay;
AddEditTask.minute = minute;
c.set(Calendar.HOUR_OF_DAY, hourOfDay);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0);
}
};
private void update_time_display() {
et_task_time.setText(formatTime.format(dateTime.getTime()));
}
你可以告诉我在那些听众中要写什么来实现我想要的东西。提前谢谢...... !!!
答案 0 :(得分:8)
以这种方式创建一个新的Date对象:
Date now = new Date(System.currentTimeMillis());
并使用int result = now.compareTo(theOtherDate);
结果将是一个int< 0如果现在Date小于theOtherDate Date,如果它们相等则为0,并且int>如果此日期更大,则为0。
答案 1 :(得分:1)
protected boolean checkDateValidity(Date date){
Calendar cal = new GregorianCalendar(date.getYear() + 1900, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes());
if((cal.getTimeInMillis()-System.currentTimeMillis()) <= 0){
return false;
}else{
return true;
}
}
将日期对象传递给此方法
如果返回false则表示您将显示警告消息
答案 2 :(得分:1)
代码从日期选择器获取用户日期并转换为java日期格式并将日期存储在日期格式变量中,然后我获取当前系统日期并将日期存储在另一个日期格式变量中,现在我有两个我可以轻松比较的日期。
DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int myear, int monthOfYear,int dayOfMonth) {
// get the user picked date from date picker
year=myear;
month=monthOfYear+1;
day=dayOfMonth;
// then convert all values to a single string
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
String sday = (""+day);
String smonth=("-"+month);
String syear=("-"+year);
String y=(""+sday+smonth+syear);
//convert the string date to a java date
try
{
Date pickerdate = formatter.parse(y);
} catch (ParseException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
//printing the system current date and picker date
Date systemdate = new Date(System.currentTimeMillis());
System.out.println("current "+systemdate);
System.out.println("format"+pickerdate);
//now u got the two date in date type to compare it easily put ur if and else condition
if(your comparedate condition)
{
do what U want to do
}
else
{
}
}
};