2013-01-16 142 views
0

我正在构建我的Android自定义应用程序。我已经实现了一个datepicker对话框,它需要时间来挑选时间。问题是时间选择器不能正确格式化我选择的内容(例如,如果选择03,则datepicker返回3)。Integer.parseInt重新格式化字符串?

为了解决这个问题,我实现了这个代码:

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!它删除格式。这是一个错误吗?

+2

所有这段文字&代码只是询问'Integer.parseInt(“03”)是否返回'3'?好的,这就是parseInt所做的。阅读[*手册*](http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.html#parseInt(java.lang.String))! – alfasin

+0

3和03是相同的,它们都代表三个 –

回答

3

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

格式化是为了显示目的,如果你想要03,然后使用格式化。前导零hasd不同的含义,同时用整数使用,这就是为什么它会为3

+1

Java整数字面值中的前导零很重要 - 它表示该值是八进制而不是十进制。这不是使用'parseInt'的单参数版本来解析带前导零的字符串的问题,因为它假定你想要一个十进制解释,但是如果你声明了像'int x = 030'这样的一个问题,十进制值24到x。 –

+0

@DanDyer:你说的没错。这跳过了我的想法。删除不必要的文本。 – kosa

0

对待你要删除这是在整数的左零,那么它应该工作以及