java.text.ParseException:无法解析的日期:timepickerdialog 的“”(偏移量为 0)错误

java.text.ParseException: Unparseable date: "" (at offset 0) error for timepickerdialog

嗨,这是我第一次开发基于 Android 的简单应用程序。我需要验证我的开始时间和结束时间,这意味着结束时间不能小于或等于开始时间。我正在使用 EditText 来提示时间选择器对话框。我试过这段代码,但它不起作用,在下面的行中出现上面的错误

Date endTimeDate = format.parse(inputEndTime.getText().toString());

这是 EditText 字段的 OnClickListener 的全部代码,用于提示时间选择器对话框。我什至试图反转 if-else 中的语句,但它对我也不起作用。任何人都可以帮助我。真的非常感谢!

inputEndTime.OnClickListener代码:

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();
        }
    });

我认为您必须先格式化字符串,然后再格式化为日期 也许 trim().

Date startTimeDate = format.parse(inputTime.getText().toString().trim());
Date endTimeDate = format.parse(inputEndTime.getText().toString().trim());

您出错的原因是,您正在尝试从 EditText (inputEndTime) 解析时间,但在您执行 format.parse().[=17 时它是空的=]

设置时,您有一个 EditText 和一个 TimePickerDialog。现在您正在实施 TimePickerDialog.OnTimeSetListener#onTimeSet() 方法。在这里您可以获取时间,用户通过方法的 hourOfDayminute 参数在对话框中选择。此时您有时间,但它还没有写入 EditText 字段本身。

因此,让代码正常工作的最简单解决方案是在进一步执行任何操作之前在 EditText 字段中设置该时间。为此,将以下行添加为 onTimeSet() 方法的第一行:

inputEndTime.setText(String.format("%02d:%02d", hourOfDay, minute));

这会将选择的时间设置为 EditText 字段中的文本,其格式可以稍后使用 format.parse(...) 进行解析。