3

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

如果 24 小时制 - 00:00、1:00、2:00、3:00 .... 23:00
如果 12 小时制 - 12 AM、1 AM、2 AM、3 AM .... 11 PM

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

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

(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 显示为 am/pm
也 24 小时格式会有所不同,具体取决于语言环境。它可以是 01:00 或 1:00。

4

2 回答 2

2

Take a look at AMSymbol and PMSymbol on NSDateFormatter.

于 2013-09-25T09:08:48.613 回答
1

尝试使用[NSLocale currentLocale] 类似这样的东西

NSString *template = NSLocalizedString(@"HH:mm", nil);
NSLocale *locale = [NSLocale currentLocale];
NSString *format = [NSDateFormatter dateFormatFromTemplate:template options:0 locale:locale];
于 2013-09-25T10:02:20.267 回答