【发布时间】:2015-06-03 09:33:43
【问题描述】:
如何仅从 NSDate 获取本地化时间,对应于 12 小时/24 小时时间由用户在设备上设置? 考虑日期是“2015 年 6 月 3 日下午 3:00” 如果设置了 12 小时格式,则应显示下午 3 点(不包括分钟部分) 如果设置了 24 小时格式,则应显示 15(不包括分钟部分)
我已尝试在所有语言环境中进行以下操作,但均未成功。例如,它非常适合 de_DE 和 fr_FR,但对于 en_US,它总是返回 3 而没有 AM/PM。
NSDateFormatter *dateFormatter = [NSDateFormatter new];
NSString *localeFormatString = [NSDateFormatter dateFormatFromTemplate:@"HH" options:0 locale:dateFormatter.locale];
dateFormatter.dateFormat = localeFormatString;
dateFormatter.timeZone = [NSTimeZone defaultTimeZone];
NSString * hour = [dateFormatter stringFromDate:date];
NSLog(@"%@",hour);
附: 如果我使用以下代码获取时间字符串(小时和分钟),则它在语言环境和 12/24 小时时间格式方面都能完美运行。但是,我只想获得几个小时,而 12/24 小时时间格式无法实现这一点。
NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];
timeFormatter.timeStyle = NSDateFormatterShortStyle;
timeFormatter.dateFormat = NSDateFormatterNoStyle;
timeFormatter.AMSymbol = @"a";
timeFormatter.PMSymbol = @"p";
timeFormatter.timeZone = timeZone;
return [timeFormatter stringFromDate:date];
【问题讨论】:
标签: ios objective-c datetime localization nsdateformatter