我正在实施预订服务,因此我需要对进入和退出日期进行控制;我通过日期选择器获取两个日期并在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)
答案 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