Измените UIDatePicker с 12 часов на 24 часа и обратно - PullRequest
3 голосов
/ 09 июня 2009

Извините, что мой первый вопрос здесь немного прост - я потратил день на чтение описаний классов NSLocale и NSCalendar, но не мог понять, возможно ли это.

У меня есть UIDatePicker в режиме UIDatePickerModeDateAndTime. В настоящее время он отображает дату и время в зависимости от локали пользователя, что является поведением по умолчанию.

Я хотел бы предложить возможность показывать UIDatePicker в 12-часовом или 24-часовом формате времени. Определить, какой формат времени использует пользователь в настоящее время, не проблема, но я не совсем понимаю, как изменить только формат времени UIDatePicker, не выбрасывая полностью языковые настройки пользователя (поскольку средство выбора также отображает локализованные дни неделю и месяцы). UIDatePicker поддерживает настройку локали и календаря.

Итак, первый вопрос - это то, что я должен пытаться сделать через NSLocale или NSCalendar, а второй вопрос - может ли кто-нибудь порекомендовать способ изолировать формат времени, не выбрасывая остальные настройки языка пользователя? 1007 *

Спасибо за любые предложения.

Ответы [ 3 ]

1 голос
/ 03 июня 2011

ОК, после прочтения за последние два года других, задававших этот же вопрос, кажется, что сделать это невозможно, поскольку UIDatePicker использует настройку страны пользователя вместо настройки локали пользователя, и это может не может быть переопределено программно. Я подал ошибку.

1 голос
/ 15 июня 2009

Это не тот ответ, который вы ищете, но в Какао вы можете создать NSDateFormatter и присоединить его к NSDatePicker (который является NSControl), используя setFormatter. К сожалению, эквивалентный класс iPhone (UIControl) пока не поддерживает это. Я поднял ошибку в Apple по этому поводу, и это известная проблема, хотя они не сказали бы мне, если / когда они планируют это исправить / улучшить.

0 голосов
/ 31 января 2015

Я решил эту проблему, используя пользовательский ввод AM / PM, инициализируя другую переменную в виде строки AM или PM на основе 12-часового формата. Новый час в 24-часовом формате помещается в NSCalendar. Для остроумия:

var hra = 1//ENTER INITIAL HOUR (HH)

var dna = "PM"//ENTER "AM" OR "PM"

if hra <= 12 && dna == "PM"{

     hra = hra + 12
}

Переменная hra теперь принимает значение 24-часового формата.

...