我正在做一个安卓应用程序,我必须选择一个特定的时间。
到目前为止,我所做的是:
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
}