如何在iOS中获取本地化时间符号?

时间:2013-09-25 08:59:49

标签: ios nsdate nsdateformatter

iOS中是否有办法根据当前本地和24小时时间格式获取所有时间符号。

  

如果24小时制 - 00:00,1:00,2:00,3:00 ...... 23:00
  如果12小时时钟 - 上午12点,凌晨1点,凌晨2点,凌晨3点......晚上11点

上面返回的数组应该基于当前的语言环境。 AM / PM符号应该是本地化的。

我们有方法来获取weekDays符号和月份符号,这些符号返回指定符号的NSString对象数组。但是我找不到类似于时间符号的东西
前 -

(NSArray *)shortStandaloneMonthSymbols;
(NSArray *)shortStandaloneWeekdaySymbols;

目前我已将数组硬编码为

NSString *hoursAMPM[] = {@" 12 AM", @" 1 AM", @" 2 AM", @" 3 AM", @" 4 AM", @" 5 AM", @" 6 AM", @" 7 AM", @" 8 AM", @" 9 AM", @" 10 AM", @" 11 AM",@" 12 PM", @" 1 PM", @" 2 PM", @" 3 PM", @" 4 PM", @" 5 PM", @" 6 PM", @" 7 PM", @" 8 PM", @" 9 PM", @" 10 PM", @" 11 PM"

};

NSString *hours24Hr[] = {@" 00:00", @" 01:00", @" 02:00", @" 03:00", @" 04:00", @" 05:00", @" 06:00", @" 07:00", @" 08:00", @" 09:00", @" 10:00", @" 11:00",@" 12:00", @" 13:00", @" 14:00", @" 15:00", @" 16:00", @" 17:00", @" 18:00", @" 19:00", @" 20:00", @" 21:00", @" 22:00", @" 23:00"

};

它适用于英语语言环境,但问题是它不会随语言环境的变化而变化,某些语言将AM / PM显示为a.m / p.m
24小时格式也有所不同,可能是01:00或1:00,具体取决于当地情况。

2 个答案:

答案 0 :(得分:1)

查看NSDateFormatter上的AMSymbolPMSymbol

答案 1 :(得分:1)

尝试使用[NSLocale currentLocale] 也许是这样的

NSString *template = NSLocalizedString(@"HH:mm", nil);
NSLocale *locale = [NSLocale currentLocale];
NSString *format = [NSDateFormatter dateFormatFromTemplate:template options:0 locale:locale];