26

我在我的应用程序中使用 TimePicker。每当用户使用 TimePicker 打开屏幕时,我都会使用当前时间对其进行初始化。当我这样做时,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));
4

5 回答 5

50

您必须使用Calendar.HOUR_OF_DAY而不是Calendar.HOUR.

即,timePicker.setCurrentHour()始终需要 24 小时格式的参数。不幸的是,API 文档中没有正确记录这一事实。

于 2012-07-08T10:38:48.247 回答
4
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);
}
于 2017-06-28T07:31:37.393 回答
1

我认为您必须覆盖 Timepicker 的 onTimeSet() 方法。检查此链接

TimePickerDialog 和 AM 或 PM

可以帮到你..

于 2012-07-08T09:23:39.857 回答
1

首先,获取Calendar类的实例,然后使用HOUR_OF_DAY获取小时。HOUR_OF_DAY将采用 24 小时格式,因此只需将其分配给一个变量,然后检查该 int 是否大于0和小于12。如果此条件为真,则 append AMor else PM。因为HOUR_OF_DAY是 24 小时格式,PM 小时数将显示为13,14这样来处理这个问题,只需减去HOUR_OF_DAYby 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");
}
于 2015-09-01T06:56:00.817 回答
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));
于 2015-09-01T06:34:59.927 回答