как показать время в формате 12 часов в iphone - PullRequest
0 голосов
/ 27 марта 2012

Я разрабатываю приложение всякий раз, когда пользователь добавляет некоторые данные, которые сохраняются в базе данных в виде даты создания в 24-часовом формате. Но для целей отображения я показываю время в 12-часовом формате. Т.е. я использовал формат «dd-MMM-гггг чч: мм а» для отображения времени, и оно правильно отображается на моем экране, но проблема заключается в том, что каждый раз, когда пользователь изменяет формат даты / времени с 12 часов на 24 часа в настройках. Мое приложение начинает показывать время в 24-часовом формате. Может кто-нибудь, пожалуйста, помогите мне, что, хотя пользователь изменить настройку на 24-часовой формат в настройках. Формат времени не должен меняться с 12 до 24 часов.

Ответы [ 3 ]

2 голосов
/ 27 марта 2012

Пожалуйста, проверьте это:

NSDateFormatter *formatterTemp = [[NSDateFormatter alloc] init];
[formatterTemp setLocale:[NSLocale currentLocale]];
[formatterTemp setDateStyle:NSDateFormatterNoStyle];
[formatterTemp setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"MM/dd/yyyy hh:mm a"];
NSString *dateString = [formatter stringFromDate:[NSDate date]];

NSRange amRange = [dateString rangeOfString:[formatterTemp AMSymbol]];
NSRange pmRange = [dateString rangeOfString:[formatterTemp PMSymbol]];
BOOL is24h = (amRange.location == NSNotFound && pmRange.location == NSNotFound);
[formatterTemp release];
NSLog(@"%@\n",(is24h ? @"YES" : @"NO"));
2 голосов
/ 27 марта 2012

В общем, вы должны позволить пользователю выбирать, как он хочет его отображать.

С вашим кодом вы сможете сделать это:

dateFormat = [[[NSDateFormatter alloc] init] autorelease];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSLocale *twelveHourLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
dateFormat.locale = twelveHourLocale;
CreatedDate = [dateFormat dateFromString:[NSString stringWithFormat:@"%@",[serviceAntInstance.arr_CreatedDate objectAtIndex:indexPath.row]]];
[dateFormat setDateFormat:@"dd-MMM-yyyy hh:mm a"];
createdDateConvert = [dateFormat stringFromDate:CreatedDate];
1 голос
/ 27 марта 2012

Как насчет того, чтобы воспользоваться преимуществами существующих локалей?

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier: @"en_US"];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

[formatter setLocale: locale];
[formatter setTimeStyle: NSDateFormatterShortStyle];

NSString *result = [formatter stringFromDate: [NSDate date]];

[formatter release];
[locale release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...