2013-01-16 54 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

對待你要刪除這是在整數的左零,那麼它應該工作以及