我如何将当前日期与日期选择器中的用户输入日期进行比较
Posted
技术标签:
【中文标题】我如何将当前日期与日期选择器中的用户输入日期进行比较【英文标题】:how do i compare current date with user input date from date picker 【发布时间】:2013-06-12 11:55:48 【问题描述】:我试图限制日期和时间。我希望如果用户尝试将日期设置为小于当前日期,那么它应该显示警报,并且同样的事情是用时间来完成的。我正在使用日期和时间选择器,我的 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()));
你能告诉我在这些听众中要写什么来实现我想要的吗?提前谢谢...!!!
【问题讨论】:
这段代码现在如何工作?它应该如何工作? 【参考方案1】:以这种方式创建一个新的 Date 对象:
Date now = new Date(System.currentTimeMillis());
并使用int result = now.compareTo(theOtherDate);
如果 now Date 小于 theOtherDate Date,则结果将是一个 int 0。
【讨论】:
【参考方案2】: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 意味着您将显示警报消息
【讨论】:
【参考方案3】:代码从日期选择器获取用户日期并转换为 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
;
【讨论】:
您可能想在帮助中心指南中look here 编写答案,代码块可能有效,但包含解释总是更好以上是关于我如何将当前日期与日期选择器中的用户输入日期进行比较的主要内容,如果未能解决你的问题,请参考以下文章