Я создаю приложение будильника в Swift 2. Я не могу найти подходящий способ узнать, установлен ли телефон на 24 часа или нет. Кроме того, я не могу изменить симулятор для работы с 24 часами, поэтому я не могу даже проверить некоторые альтернативы, играя с настройками времени. Любые идеи?
Хо, я проверяю, установлен ли формат времени телефона на 24 часа?
Ответ 1
- Для
NSDateFormatter
существует спецификатор шаблона дляNSDateFormatter
. Этот спецификаторj
, и вы можете получить его через методdateFormatFromTemplate:options:locale:
NSDateFormatter
. Форматир возвращаетh a
, если для locale установлено значение 12H, иначеHH
, если оно установлено на 24H, поэтому вы можете легко проверить, содержит ли строка выводаa
или нет. Это зависит от свойстваlocale
форматирования, которое вы должны установить наNSLocale.currentLocale()
для получения текущей локали системы:
Swift 3
let locale = NSLocale.current
let formatter : String = DateFormatter.dateFormat(fromTemplate: "j", options:0, locale:locale)!
if formatter.contains("a") {
//phone is set to 12 hours
} else {
//phone is set to 24 hours
}
Swift 2
let locale = NSLocale.currentLocale()
let formatter : String = NSDateFormatter.dateFormatFromTemplate("j", options:0, locale:locale)!
if formatter.containsString("a") {
//phone is set to 12 hours
} else {
//phone is set to 24 hours
}
Ссылка: Ссылка на класс NSDateFormatter - Unicode ts35-23 Дата Таблица полей полей
- В симуляторе вы не можете переключать 12/24 часов в настройках, как на реальных устройствах. Трюк для его изменения заключается в редактировании стиля даты в Simulator, не затрагивая выбранный регион или календарь. Этот параметр можно найти в разделе "Настройки" > "Основные" > "Язык и регион" > "Дополнительно".