控制和比较日期选择器与simplDateFormat的日期

时间:2014-05-30 09:26:42

标签: android datepicker simpledateformat

我正在实施预订服务,因此我需要对进入和退出日期进行控制;我通过日期选择器获取两个日期并在EditText上设置。 我的EditText被分配了两个变量:entryField& exitField。 似乎日期从下面的日志输出中无法解析。

这是我的代码的一部分:

OnDateSetListener ondate = new OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
                          int dayOfMonth) {
      switch (IDclick){

          case 1:
         entryField.setText(String.valueOf(monthOfYear)+"-"+String.valueOf(dayOfMonth)+"-"+String.valueOf(year));

              break;
          case 2:
          exitField.setText(String.valueOf(monthOfYear)+"-"+String.valueOf(dayOfMonth)+"-"+String.valueOf(year));

          break;

      }
      }
 };

 public void dateControl(EditText date1, EditText date2 ){
    SimpleDateFormat sdf =new SimpleDateFormat("MM-dd-yyyy");
try {
Log.i("DATE","entry date ="+entryField);
Log.i("DATE","exit date ="+exitField);
Log.i("DATE","date1 ="+date1);
Log.i("DATE","date2 ="+date2);

    Date mdate1 =sdf.parse(date1.toString());
    Date mdate2 =sdf.parse(date2.toString());



Log.i("DATE","mdate1 ="+mdate1);
Log.i("DATE","mdate2 ="+mdate2);

if (mdate1.compareTo(mdate2)>0) {
        new AlertDialog.Builder(getActivity()).setTitle("Invalid Date")
                .setMessage("Please check your dates !")
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        entryField.setText("");
                        exitField.setText("");
                    }
                }).show();
    }

}catch (ParseException ex) {
ex.printStackTrace();

}      }

我正在使用dateControl方法;有两个参数:entryField和exitField。 问题是我在LOG:unparsable date !!!

上得到了这个输出
05-30 09:36:14.970    1159-1159/com.example.app I/DATE﹕ entry date =android.widget.EditText@53a0f9d8
05-30 09:36:14.970    1159-1159/com.example.app I/DATE﹕ exit date =android.widget.EditText@53a109a8
05-30 09:36:14.974    1159-1159/com.example.app I/DATE﹕ date1 =android.widget.EditText@53a0f9d8
05-30 09:36:14.974    1159-1159/com.example.app I/DATE﹕ date2 =android.widget.EditText@53a109a8
05-30 09:36:14.978    1159-1159/com.example.app W/System.err﹕ java.text.ParseException: Unparseable date: "android.widget.EditText@53a0f9d8" (at offset 0)
05-30 09:36:14.982    1159-1159/com.example.app W/System.err﹕ at java.text.DateFormat.parse(DateFormat.java:626)
05-30 09:36:14.982    1159-1159/com.example.app W/System.err﹕ at com.example.app.Reservation.dateControl(Reservation.java:220)

1 个答案:

答案 0 :(得分:2)

更改

Date mdate1 =sdf.parse(date1.toString());
Date mdate2 =sdf.parse(date2.toString());

Date mdate1 =sdf.parse(date1.getText().toString());
Date mdate2 =sdf.parse(date2.getText().toString());

如果您执行date1.toString(),则会返回String date1的代表(即EditText)。

如果您想从[{1}}获取文字,则需要致电EditText