2014-10-12 2 views
1

У Ihones at http://apple.com/iphone есть 9:41 AM в строке состояния для esoteric reasons. Я пытаюсь сделать локализованные скриншоты для своего приложения, поэтому я обратился к http://apple.com/cn/iphone, где они последовательно используют 上午9:41. Однако, когда я установил свой локаль в zh-Hans или zh-Hant с использованием флага -AppleLanguages, NSDateFormatter выплевывает 9:41 上午. Вот код, я использую:NSDateFormatter результаты отличаются от apple.cn скриншоты

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSString *originalLocale = dateFormatter.locale; 
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US"]; 
[dateFormatter setDateFormat:@"h:mm a"]; 
NSDate *date = [dateFormatter dateFromString:@"9:41 AM"]; 
dateFormatter.locale = originalLocale; 

NSString *dateString = [dateFormatter stringFromDate:date]; 

Этот код дает правильный формат в en_US, но неправильно один в zh-Hant. Есть ли способ получить локализованную версию @"h:mm a", отличную от жесткого кодирования для каждого языка?

ответ

2

Не устанавливайте dateFormat, установите timeStyle для доступа к соответствующему встроенному формату. NSDateFormatterMediumStyle смотрит прямо на меня. Также есть dateStyle, если вы этого хотите.

Итак, пример кода:

NSDateFormatter *newformatter = [NSDateFormatter new]; 
newformatter.locale = [NSLocale localeWithLocaleIdentifier:@"zh-Hant"]; 
newformatter.timeStyle = NSDateFormatterMediumStyle; 
NSLog(@"%@", [newformatter stringFromDate:[NSDate date]]); 

Выход:

上午12:10:40 
+0

'NSDateFormatterShortStyle' сделал это для меня,' timeStyle' это часть мне не хватало. Благодаря! –

Смежные вопросы