Найти, если пользователь предпочитает 12/24-часовые часы? - PullRequest
5 голосов
/ 15 декабря 2011

У меня есть drawRect, который делает временную шкалу немного похожей на iCal. Я использую цикл for, чтобы записать время в представлении прокрутки. Мне было интересно, есть ли A) способ определить, выбрал ли пользователь в настройках системы 12-часовой или 24-часовой формат, и B) существует ли более эффективный способ изменения меток времени, чем вызывать запрос «if» при каждом проходе. цикла for. Ура

Ответы [ 3 ]

6 голосов
/ 13 мая 2014

В предыдущих ответах предполагается, что символы «AM» и «PM» представлены римскими буквами.Этот код, адаптированный из keyur bhalodiya , лучше справляется с такими языками, как китайский, используя AMSymbol и PMSymbol методы NSDateFormatter.

-(BOOL)uses24hourTime
{
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
     [formatter setLocale:[NSLocale currentLocale]];
     [formatter setDateStyle:NSDateFormatterNoStyle];
     [formatter setTimeStyle:NSDateFormatterShortStyle];

     NSString *dateString = [formatter stringFromDate:[NSDate date]];
     NSRange amRange = [dateString rangeOfString:[formatter AMSymbol]];
     NSRange pmRange = [dateString rangeOfString:[formatter PMSymbol]];

     return (amRange.location == NSNotFound && pmRange.location == NSNotFound);
}
5 голосов
/ 15 декабря 2011
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeStyle:NSDateFormatterLongStyle];

if([[dateFormatter dateFormat] rangeOfString:@"a"].location != NSNotFound) {
    // user prefers 12 hour clock
} else {
    // user prefers 24 hour clock
}
1 голос
/ 15 декабря 2011
NSDate *today = [NSDate date];
NSString *formattedString = [NSDateFormatter localizedStringFromDate:today dateStyle: kCFDateFormatterNoStyle timeStyle: kCFDateFormatterShortStyle];

NSRange foundRange;
foundRange = [formattedString rangeOfString:"am" options:NSCaseInsensitiveSearch];
if(foundRange.location == NSNotFound) {
    foundRange = [formattedString rangeOfString:"pm" options:NSCaseInsensitiveSearch];
}

BOOL isAMPMSettingOn = (foundRange.location != NSNotFound);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...