2012-07-08 110 views
17

我在我的應用程序中使用了TimePicker。每當用戶使用TimePicker打開屏幕時,我用當前時間初始化它。當我這樣做時,TimePicker顯示AM而不是PM。爲什麼會發生?有什麼我必須添加在我的代碼?如何設置TimePicker中的AM/PM?

Date initDate = m_NoteManageObject.getDateTimeArray(position); 
Calendar myCal = Calendar.getInstance(); 

myCal.setTime(initDate); 
TimePicker timePicker = (TimePicker)layout.findViewById(R.id.time_picker); 

// Initialise Time Picker 

timePicker.setCurrentHour(myCal.get(Calendar.HOUR)); 
timePicker.setCurrentMinute(myCal.get(Calendar.MINUTE)); 
+0

我有同樣的問題,我已經想通了。如果您使用Calendar.HOUR,這意味着您忽略了AM/PM的價值。相反,在設置當前小時的同時,請使用Calendar.HOUR_OF_DAY考慮AM/PM。 – 2013-07-22 16:31:13

回答

38

你將不得不使用Calendar.HOUR_OF_DAY而不是Calendar.HOUR

即,timePicker.setCurrentHour()總是期望24小時格式的參數。不幸的是,這個事實沒有在API文檔中正確記錄。

+0

它解決了我的問題。 – 2013-07-22 16:33:45

+0

我在'textView'中設置時間,並使用相同的textView來選擇時間。當我用'timePicker'設置時間時,它對textView可見,但當我再次選擇textView **來選擇時間時,'timePicker'將'AM/PM'設置爲** AM **。請給一個解決方案。 – Apurva 2015-01-19 12:46:38

1

我想你必須重寫Timepicker的onTimeSet()方法。檢查此鏈接

TimePickerDialog and AM or PM

願它可以幫助你..

+0

我不使用TimePickerDialog,我簡單地使用TimePicker小部件,我的xml佈局。 – AndroidDev 2012-07-08 09:26:15

+0

但是在設置中,它是否是24小時格式?只需檢查它並嘗試使用12小時格式。 – 2012-07-08 09:28:03

+0

沒有它在12小時格式..實際上在時間選擇器我想顯示上午或下午取決於當前時間 – AndroidDev 2012-07-08 09:29:22

0

試試這個:

  Calendar calendar = Calendar.getInstance(); 
      calendar.set(0, 0, 0, hourOfDay, minute, 0); 
      long timeInMillis = calendar.getTimeInMillis(); 
      java.text.DateFormat dateFormatter = new SimpleDateFormat("hh:mm a"); 
      Date date = new Date(); 
      date.setTime(timeInMillis); 
      time.setText(dateFormatter.format(date)); 
0

首先,得到Calendar類的實例,然後使用HOUR_OF_DAY拿到小時。 HOUR_OF_DAY將採用24小時格式,因此只需將其分配給一個變量,然後檢查該int是否大於0且小於12。如果此條件爲真,則附加AMPM。因爲HOUR_OF_DAY是24小時格式,所以PM小時數將顯示爲13,14,因此要處理此問題,只需將HOUR_OF_DAY減去12即可。下面是代碼:

Calendar calendar = Calendar.getInstance(); 
int hour = calendar.get(Calendar.HOUR_OF_DAY); 
if (hour < 12 && hour >= 0) { 
    tv.setText(hour + " AM"); 
} else { 
    hour -= 12; 
    if(hour == 0) { 
     hour = 12; 
    } 
    tv.setText(hour + " PM"); 
} 
0
public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute) { 
    if(hourOfDay>=0 && hourOfDay<12){ 
     time = hourOfDay + " : " + minute + " AM"; 
    } else { 
     if(hourOfDay == 12){ 
      time = hourOfDay + " : " + minute + "PM"; 
     } else{ 
      hourOfDay = hourOfDay -12; 
      time = hourOfDay + " : " + minute + "PM"; 
     } 
    } 

    deliveryTime.setText(time); 
} 
+0

這對android中的timePicker非常有用。試試吧 – 2017-06-28 07:32:34