在安卓中以 12 或 24 小时格式显示时间选择器



我的TimePickerDialog有问题。首先检测用户设备的时间是否为 12 小时或 24 小时格式:

…
String format;
…
if (DateFormat.is24HourFormat(this)) {
Log.i("control","Format 24");
format=("24");
} else {
 Log.i("control","Format 12");
format=("12");
}
…

现在我的目的是向TimePicker显示am或pm选项,具体取决于格式:

…
if(format.equals("24"){
view.setIs24HourView(true);
} else {
view.setIs24HourView(true);
} …

这是完整的代码TimePickerDialog:

public class AlarmPreferencesActivity extends ListActivity
…
TimePickerDialog timePickerDialog = new TimePickerDialogs(this, new TimePickerDialog.OnTimeSetListener(){
            @Override
            public void onTimeSet(TimePicker view, int hours, int minutes) {
                Calendar newAlarmTime = Calendar.getInstance();
                newAlarmTime.set(Calendar.HOUR_OF_DAY, hours);
                newAlarmTime.set(Calendar.MINUTE, minutes);
                newAlarmTime.set(Calendar.SECOND, 0);
                alarm.setAlarmTime(newAlarmTime);
                alarmPreferenceListAdapter
                .setMathAlarm(getMathAlarm());
                alarmPreferenceListAdapter
                .notifyDataSetChanged();
            }},
            alarm.getAlarmTime().get(Calendar.HOUR_OF_DAY),
            alarm.getAlarmTime().get(Calendar.MINUTE), true);

        timePickerDialog.setCancelable(true);
        timePickerDialog.setCustomTitle(getLayoutInflater().inflate(R.layout.custom_hours, null));
        timePickerDialog.show();
        }

我的问题是我不知道在哪里包含view.setIs24HourView (true)(false).我尝试了很多变化,但没有任何效果。我搜索了信息,但没有成功。

如果您希望TimePicker以24小时格式使用当前时间正确初始化,请使用以下命令:

import java.util.Calendar;
timePicker.setIs24HourView(true);
timePicker.setCurrentHour(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));

否则,由于 Android 错误,选取器将以不正确的小时(2 而不是 14 等)开始。希望这有帮助

如果你想在TimePickerDialog中使用24小时格式,你需要将正确的值传递给TimePickerDialog的构造函数。您可以在此处查看此类的文档。您可以看到,两个构造函数都接受boolean is24HourView标志,我们使用该标志决定是否希望对话框采用 24 小时格式。如果您希望应用时间的行为方式与系统相同,则可以使用以下行获取 24 小时格式的系统设置: DateFormat.is24HourFormat(context)这样您就可以在构造函数中传递该值。

最新更新