Java Integer.parseInt是否重新格式化字符串?

Java Integer.parseInt是否重新格式化字符串?,java,android,datepickerdialog,Java,Android,Datepickerdialog,我正在为Android构建我的自定义应用程序。我实现了一个datepicker对话框,在选择时间时需要花费时间。问题是时间选择器没有正确格式化我选择的内容(例如,如果选择了03,datepicker返回3) 为了解决此问题,我实现了以下代码: TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() { publ

我正在为Android构建我的自定义应用程序。我实现了一个
datepicker
对话框,在选择时间时需要花费时间。问题是时间选择器没有正确格式化我选择的内容(例如,如果选择了
03
datepicker
返回
3

为了解决此问题,我实现了以下代码:

    TimePickerDialog.OnTimeSetListener timePickerListener = 
            new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int selectedHour,
                int selectedMinute) {

            hour = selectedHour;
            minute = selectedMinute;

            long date = calendarView.getDate();
            DateFormat df = new DateFormat();

            String format = (String) df.format("dd/MM/yyyy", date);

            Date hourdate = new Date();

            hourdate.setHours(hour);
            hourdate.setMinutes(minute);


            SimpleDateFormat hourformatter = new SimpleDateFormat("HH");
            SimpleDateFormat minuteformatter = new SimpleDateFormat("mm");

            String formattedhour = hourformatter.format(hourdate);
            String formattedminute = minuteformatter.format(hourdate);

            Log.v(StorybookContentProvider.TAG_LOG, "formattedhour" + Integer.parseInt(formattedminute) + formattedminute);


            as.setDate(format);
            as.setRangeStart("");
            as.setRangeFinish("");
            as.setHour(Integer.parseInt(formattedhour));
            Log.v(StorybookContentProvider.TAG_LOG, "formattedhoursaving" + Integer.parseInt(formattedminute));
            as.setMinutes(Integer.parseInt(formattedminute));
            as.setTabColor(as.tabHost, true);

问题是:
formattedhour
是以我想要的方式格式化的(如果选择
03
,它返回
03
),但是如果我选择
Integer.parseInt(formattedhour)
,它返回3!它将删除该格式。这是错误吗?

没有错误。它正在按预期工作


格式化用于显示目的,如果需要03,请使用格式化的03。前导零在与整数一起使用时具有不同的含义,这就是为什么它将被视为3

没有bug。它正在按预期工作


格式化用于显示目的,如果需要03,请使用格式化的03。前导零在与整数一起使用时具有不同的含义,这就是为什么它将被视为3

您必须删除整数左边的零,然后它应该可以正常工作

您必须删除整数左边的零,然后它应该可以正常工作

所有这些文本和代码只是为了询问
integer.parseInt(“03”)
是否返回
3
?是的,parseInt就是这么做的。读这本书!3和03是相同的,它们都表示三个。所有这些文本和代码只用于询问
Integer.parseInt(“03”)
是否返回
3
?是的,parseInt就是这么做的。读这本书!3和03是相同的,它们都表示三,Java整数文本中的前导零是有效的-它表示值是八进制而不是十进制。使用单参数版本的
parseInt
解析带前导零的字符串不是问题,因为它假定您需要十进制解释,但如果您声明类似
int x=030
的内容,将十进制值24指定给x,则可能会出现问题。@DanDyer:您是正确的。我没想到。删除了不必要的文本。Java整数文本中的前导零是有效的-它表示值是八进制而不是十进制。使用单参数版本的
parseInt
解析带前导零的字符串不是问题,因为它假定您需要十进制解释,但如果您声明类似
int x=030
的内容,将十进制值24指定给x,则可能会出现问题。@DanDyer:您是正确的。我没想到。删除不必要的文本。