12/24-часовой режим конфликта

Я французский разработчик Android, поэтому используюLocale.getDefault() вызывает мойDateFormat использовать 24-часовой режим. Но когда я вручную установил свое устройство в 12-часовой режим через меню настроек,DateFormat продолжает идти в 24-часовом формате.

Напротив,TimePickers установлены в соответствии с моими 12/24-часовыми настройками.

Есть ли способ сделатьDateFormatведут себя так же, какTimePickerс?

РЕДАКТИРОВАТЬ:

Вот мойDateFormat объявление:

timeFormat = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.getDefault());

И вот где я поставилTimePickerдо 12 или 24-часовой режим.

tp.setIs24HourView(android.text.format.DateFormat.is24HourFormat((Context) this));

Мое решение:

Согласно ответу @Meno Hochschild ниже, вот как я решил эту сложную проблему:

boolean is24hour = android.text.format.DateFormat.is24HourFormat((Context) this);
tp.setIs24HourView(is24hour); // tp is the TimePicker
timeFormat = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.getDefault());
if (timeFormat instanceof SimpleDateFormat) {
    String pattern = ((SimpleDateFormat) timeFormat).toPattern();
    if (is24hour) {
        timeFormat = new SimpleDateFormat(pattern.replace("h", "H").replace(" a",""), Locale.getDefault());
    }
    else {
        timeFormat = new SimpleDateFormat(pattern.replace("H", "h"), Locale.getDefault());
    }
}

После этого,timeFormat будет правильно форматировать даты независимо от того, настроено ли ваше устройство для отображения времени в 24-часовом или 12-часовом формате. ИTimePicker тоже будет правильно настроен.

Ответы на вопрос(4)

Ваш ответ на вопрос