在Android中显示12或24小时格式的TimePicker

Ser*_*o76 2 android dialog time-format android-timepicker

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

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

现在我打算使用am或pm选项显示TimePicker,具体取决于格式:

…
if(format.equals("24"){
view.setIs24HourView(true);
} else {
view.setIs24HourView(true);
} …
Run Code Online (Sandbox Code Playgroud)

这是完整的代码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();
        }
Run Code Online (Sandbox Code Playgroud)

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

bou*_*ter 6

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

import java.util.Calendar;

timePicker.setIs24HourView(true);
timePicker.setCurrentHour(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));
Run Code Online (Sandbox Code Playgroud)

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