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

3
在iOS中,有没有一种方法可以根据当前本地和24小时时间格式获取所有时间符号的方式。 例如: 如果是24小时制,则为00:00、1:00、2:00、3:00......23:00; 如果是12小时制,则为上午12点、上午1点、上午2点、上午3点......晚上11点。 返回的数组应该基于当前区域设置。AM/PM符号应该本地化。
我们有获取星期几符号和月份符号的方法,它们会返回一个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"

};

这段代码在英语环境下运行良好,但问题是无法根据环境变化进行修改,比如有些语言显示上午/下午为a.m/p.m,24小时制也因环境不同而有所不同,例如可以是01:00或1:00。

2个回答

2
请查看NSDateFormatter中的AMSymbol和PMSymbol。这些符号与时间格式化有关。详情请参考:AMSymbolPMSymbol。保留HTML标签。

1

尝试使用[NSLocale currentLocale],可能是这样的

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接