java.lang.NumberFormatException:无效整数:“下午 24 点”

java.lang.NumberFormatException: Invalid int: "24 pm"

当我使用 TimePicker 选择时间时,我的应用程序崩溃了。
如何解决这个问题?

请指导我。

当我打印 timeMinute System.out: 30 am 我得到一个 此行错误 Integer.parseInt(timeMinute.replace(" am","")), true);

start_time.setInputType(InputType.TYPE_NULL);

        start_time.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                String time = start_time.getText().toString();

                if (time != null && !time.equals("")) {
                    StringTokenizer st = new StringTokenizer(time, ":");
                    String timeHour = st.nextToken();
                    String timeMinute = st.nextToken();

                    timePickDialog = new TimePickerDialog(v.getContext(),
                            new TimePickHandler(), Integer.parseInt(timeHour),
                            Integer.parseInt(timeMinute.replace(" am","")), true);

                } else {
                    timePickDialog = new TimePickerDialog(v.getContext(),
                            new TimePickHandler(), 10, 45, true);
                }
                timePickDialog.show();
            }
        });



private class TimePickHandler implements TimePickerDialog.OnTimeSetListener {

        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            //start_time.setText(hourOfDay + ":" + minute);
            int hour = hourOfDay % 12;
            if (hour == 0)
                hour = 12;
            start_time.setText(String.format("%02d:%02d %s", hour, minute,hourOfDay < 12 ? "am" : "pm"));
            timePickDialog.hide();
        }

    }

您可以执行以下操作:

if (time != null && !time.equals("")) {
    StringTokenizer st = new StringTokenizer(time, ":");
    String timeHour = st.nextToken();
    String timeMinute = st.nextToken();

    timePickDialog = new TimePickerDialog(v.getContext(),
        new TimePickHandler(), Integer.parseInt(timeHour),
        Integer.parseInt(timeMinute.replace(" am","").replace(" pm","")), true);
}

将“上午”和“下午”替换为“”。

一个较短的解决方案,只是为了提供使用双 replace() 的替代方法,将使用正则表达式:

timePickDialog = new TimePickerDialog(v.getContext(),
    new TimePickHandler(), Integer.parseInt(timeHour),
    Integer.parseInt(timeMinute.replace("\s[a|p]m", ""), true);