2014-04-02 11 views
11

Mam funkcję wyboru czasu, która ustawia czas w EditText. Ale pokazany format nie jest odpowiedni. na przykład dla 16:07 jest pokazane jako 4: 7. gdy cyfra w czasie jest mniejsza niż 10, automatycznie usuwa 0. proszę, pomóżcie mi. Mój kod jestselektor czasu pokazujący czas jak 4: 7 zamiast 04:07

 if (v == btnTimePicker1) 
       { 

       // Process to get Current Time 
       final Calendar c = Calendar.getInstance(); 
       mHour = c.get(Calendar.HOUR_OF_DAY); 
       mMinute = c.get(Calendar.MINUTE); 

       // Launch Time Picker Dialog 
       TimePickerDialog tpd = new TimePickerDialog(this, 
         new TimePickerDialog.OnTimeSetListener() { 

          @Override 
          public void onTimeSet(TimePicker view, int hourOfDay, 
            int minute) { 
           // Display Selected time in textbox 
           txtTime1.setText(hourOfDay + ":" + minute); 
          } 
         }, mHour, mMinute, false); 
       tpd.show(); 




      } 
+1

trzeba ustawić go ręcznie ..”wartość –

+0

wyboru z' hourOfDay' i 'minute', jeśli mniej niż 10 zmiana, która na łańcuch i dodać 0 –

+0

próbowałem to tak, ale nie mógł can u pls Powiedz mi, jak niego prawidłowo –

Odpowiedz

42

Wystarczy zmienić linię:

txtTime1.setText(hourOfDay + ":" + minute); 

do:

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

i wszystko będzie dobrze.

Jeśli chcesz zegar 12-godzinny zamiast 24-godzinnym jednego, a następnie zastąpić tę linię ze zamiast nich:

int hour = hourOfDay % 12; 
if (hour == 0) 
    hour = 12; 
txtTime1.setText(String.format("%02d:%02d %s", hour, minute, 
           hourOfDay < 12 ? "am" : "pm")); 

czy można to zrobić w zaledwie 2 linie z:

int hour = hourOfDay % 12;  
txtTime1.setText(String.format("%02d:%02d %s", hour == 0 ? 12 : hour, 
           minute, hourOfDay < 12 ? "am" : "pm")); 
+1

Ta odpowiedź powinna być zaakceptowana. Ponieważ String.format ("% 02d:% 02d", hourOfDay, minute) ma sens, zamiast sprawdzać –

+1

@ Swap-IOS-Android: Gotowe ... –

2

najpierw trzeba utworzyć jedną funkcję sprawdzenia wejście i przekształcić go w ciąg według stanu.

public String pad(int input) { 
    if (input >= 10) { 
     return String.valueOf(input); 
    } else { 
     return "0" + String.valueOf(input); 
    } 
} 

Następnie można wywołać tak

txtTime1.setText(pad(hourOfDay) + ":" + pad(minute)); 
1

Można użyć następującego kodu -

public void onTimeSet(TimePicker view, int hourOfDay, int minuteOfDay) { 
    int hour; 
    String minute, amOrPm; 
    if (hourOfDay > 12) { 
    hour = hourOfDay - 12; 
    amOrPm= "PM"; 
    } else { 
    hour = hourOfDay; 
    amOrPm = "AM"; 
    } 
    if(minuteOfDay < 10) { 
     minute = "0"+minuteOfDay; 
    } else { 
     minute = "" + minuteOfDay; 
    } 
    txtTime1.setText(hour + " : " + minute + " " + amOrPm); 
    } 
4

Można sprawdzić, czy godzina i minuty są mniej niż dziesięć. Jeśli tak, wystarczy dodać infront "0" tego konkretnego ciągu. Wystarczy zmodyfikować kod tak:

@Override 
    public void onTimeSet(TimePicker view, int hourOfDay, 
    int minute) { 
     // Display Selected time in textbox 

     String hourString; 
     if (hourOfDay < 10) 
      hourString = "0" + hourOfDay; 
     else 
      hourString = "" +hourOfDay; 

     String minuteSting; 
     if (minute < 10) 
      minuteSting = "0" + minute; 
     else 
      minuteSting = "" +minute; 

     txtTime1.setText(hourString + ":" + minuteSting); 
    } 
3

Logika jest prosta, właśnie przycięte odpowiedź powyżej

prostu zamienić linię gdzie ustawiony czas w EditText z

txtTime.setText(pad(hourOfDay) + ":" + pad(minute)); 

następnie dodać do niego funkcję, np.

 public String pad(int input) 
     { 

      String str = ""; 

      if (input > 10) { 

       str = Integer.toString(input); 
      } else { 
       str = "0" + Integer.toString(input); 

      } 
      return str; 
     } 
-1
TimePickerDialog tpd = new TimePickerDialog(YourActivity.this, new 
TimePickerDialog.OnTimeSetListener() { 

    @Override 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     if (hourOfDay == 0) { 
      hourOfDay = 12; 
     } 
     mEndTime = (String.format("%02d:%02d", hourOfDay, minute)); 
     //mEndTime = (hourOfDay + ":" + minute); 

     mEditTextEnd.setText(mEndDate + " " + mEndTime + ":00"); 
    } 
}, mHourEnd, mMinuteEnd, true); 
tpd.show(); 
Powiązane problemy