java.text.ParseException: непарсируемая дата: ошибка "" (со смещением 0) для timepickerdialog
Привет, я впервые разрабатываю простое приложение для Android. Мне нужно проверить время начала и окончания, а это означает, что время окончания не должно быть меньше или равно времени начала. Я использую EditText, чтобы открыть диалог выбора времени. Я пробовал этот код, но он не работает, с точки зрения получения ошибки выше в строке ниже
Date endTimeDate = format.parse(inputEndTime.getText().toString());
Это полный код поля OnClickListener for EditText, чтобы вызвать диалоговое окно выбора времени. Я даже пытался изменить утверждения в if-else, но у меня это тоже не работает. Любой может помочь мне в этом. Действительно большое спасибо!
inputEndTime.OnClickListener code:
inputEndTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
int hour = myTime.get(Calendar.HOUR_OF_DAY);
int min = myTime.get(Calendar.MINUTE);
TimePickerDialog myEndTimePickerDialog = new TimePickerDialog(ViewDocActivity.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute)
{
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
try
{
Date startTimeDate = format.parse(inputTime.getText().toString());
Date endTimeDate = format.parse(inputEndTime.getText().toString());
if (startTimeDate.compareTo(endTimeDate) <= 0)
{
Context timeContext = getApplicationContext();
CharSequence text = "Please enter the correct end time";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(timeContext, text, duration);
toast.show();
}
else
{
inputEndTime.setText(String.format("%02d:%02d", hourOfDay, minute));
}
}
catch(ParseException e)
{
e.printStackTrace();
}
}
}, hour, min, true);
myEndTimePickerDialog.setTitle("Select Time");
myEndTimePickerDialog.show();
}
});
2 ответа
Причина вашей ошибки в том, что вы пытаетесь проанализировать время из вашего EditText (inputEndTime
), но это пустое время, когда вы делаете format.parse()
,
При настройке у вас есть EditText и TimePickerDialog. Теперь вы реализуете метод TimePickerDialog.OnTimeSetListener#onTimeSet(). Здесь вы получаете время, выбранное пользователем в диалоге через hourOfDay
а также minute
параметры метода. На данный момент у вас есть время, но оно еще не записано в самом поле EditText.
Поэтому самое простое решение для работы вашего кода - установить это время в поле EditText, прежде чем делать что-либо еще. Для этого добавьте следующую строку в качестве первой строки onTimeSet()
метод:
inputEndTime.setText(String.format("%02d:%02d", hourOfDay, minute));
Это устанавливает выбранное время как текст в поле EditText в формате, который затем может быть проанализирован с format.parse(...)
позже.
Я думаю, что вы должны отформатировать строку перед форматированием в Date Возможно trim().
Date startTimeDate = format.parse(inputTime.getText().toString().trim());
Date endTimeDate = format.parse(inputEndTime.getText().toString().trim());