2014-04-02 16 views
11

Tôi có chức năng trình chọn thời gian đặt thời gian trong EditText. Nhưng định dạng nó cho thấy không phù hợp. ví dụ: 04:07 pm được hiển thị là 4: 7. bất cứ khi nào chữ số trong thời gian nhỏ hơn 10, nó sẽ tự động xóa 0. hãy giúp tôi. Mã của tôi làtrình chọn thời gian hiển thị thời gian như 4: 7 thay vì 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

Bạn cần phải thiết lập nó bằng tay ..' giá trị –

+0

séc của 'hourOfDay' và' minute', nếu ít hơn 10 sự thay đổi đó để chuỗi và thêm 0 –

+0

tôi đã cố gắng nó như thế này nhưng không thể có thể u pls cho tôi biết làm thế nào với nó một cách chính xác –

Trả lời

42

Chỉ cần thay đổi dòng:

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

tới:

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

và tất cả sẽ tốt.

Nếu bạn muốn có một đồng hồ 12 giờ thay vì 24 giờ một, sau đó thay thế dòng rằng với những thay:

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

hoặc bạn có thể làm điều đó chỉ trong vòng 2 dòng với:

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

Câu trả lời này phải được chấp nhận một Vì String.format ("% 02d:% 02d", hourOfDay, phút) có ý nghĩa thay vì nếu séc –

+1

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

2

Trước tiên, cần tạo một chức năng kiểm tra đầu vào của bạn và chuyển đổi nó thành Chuỗi theo điều kiện.

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

Sau đó, bạn có thể gọi như thế này

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

Bạn có thể sử dụng đoạn mã sau -

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

Bạn có thể kiểm tra xem giờ và phút là ít hơn mười. Nếu vậy, bạn chỉ cần thêm một "0" trước mặt của chuỗi cụ thể đó. Chỉ việc điều chỉnh mã của bạn như thế này:

@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

Logic rất đơn giản, tôi đã chỉ tỉa những câu trả lời ở trên

chỉ thay thế dòng nơi chúng tôi đặt thời gian trong EditText với

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

sau đó thêm chức năng cho nó tức là

 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(); 
Các vấn đề liên quan