在 Android TimePicker 对话框片段中显示 12hh 格式



我正在做一个安卓应用程序,我必须选择一个特定的时间。

到目前为止,我所做的是:

 public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    // use the current time as the default values for the picker
    Calendar c = Calendar.getInstance();
    int hour = c.get(Calendar.HOUR_OF_DAY);
    int minute = c.get(Calendar.MINUTE);

    // create a new instance of TimePickerDialog and return it
    return new TimePickerDialog(getActivity(), this, hour, minute, false
            ); // DateFormat.is24HourFormat(getActivity())
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute)
{   
    view.setIs24HourView(false);
    String time;
    if ( minute < 10  ) {
        _minute =  ":0" + minute;
    } else {
        _minute = ":" + minute;
    }

    Log.w("TimePicker", "Time = " + time);

    EditText activityButton = (EditText)getActivity().findViewById(R.id.etTime);
    activityButton.setText( time );

}

我想要实现的是:

 6:30 PM

但我得到的只是:

18:30 

我想要 12 小时格式而不是 24 小时。我该怎么做?非常感谢帮助。

尝试更改

 int hour = c.get(Calendar.HOUR_OF_DAY);

int hour = c.get(Calendar.HOUR);

因为我看到

public static final int HOUR_OF_DAY

在 API 级别 1 中添加

用于获取和设置的字段编号,指示一天中的小时。HOUR_OF_DAY用于 24 小时制。例如,在晚上 10:04:15.250 时,HOUR_OF_DAY为 22。

http://developer.android.com/reference/java/util/Calendar.html#HOUR_OF_DAY

只需使用 TimePickerDialog 类即可通过其构造函数实现此目的:

 TimePickerDialog (Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)

在此处查看文档。

根据您的要求,请从此处查看参考:

http://www.compiletimeerror.com/2013/07/time-picker-in-android-example.html

您只需设置一个条件来确定一天中的小时是否大于 12,以便将其减少 12 小时并将 PM 附加到它。该条件还应确定一天中的小时是否等于下午 12 点,因此它只会附加 PM,而不会将其减少 12。

if (hourOfDay > 12) {
    hourOfDay = hourOfDay - 12;
    String AM_PM = "PM";
} else if (hourOfDay < 12) {
    String AM_PM = "AM";
}else{
    String AM_PM = "PM"; // this means it is 12 in the afternoon
}

最新更新