检测时间格式是12小时制还是24小时制

有什么办法来检测应用程序的当前设备是否使用12小时我们的24小时格式,以便我可以使用一个NSDateFormatter 12小时和一个24小时取决于用户语言/位置设置? 就像UIDatePicker检测并显示AM / PMselect器,如果它是12小时格式。

我明白了,这很容易。 我只是把这个代码添加到viewDidLoad

 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setLocale:[NSLocale currentLocale]]; [formatter setDateStyle:NSDateFormatterNoStyle]; [formatter setTimeStyle:NSDateFormatterShortStyle]; NSString *dateString = [formatter stringFromDate:[NSDate date]]; NSRange amRange = [dateString rangeOfString:[formatter AMSymbol]]; NSRange pmRange = [dateString rangeOfString:[formatter PMSymbol]]; BOOL is24h = (amRange.location == NSNotFound && pmRange.location == NSNotFound); [formatter release]; NSLog(@"%@\n",(is24h ? @"YES" : @"NO")); 

而且它完全返回YESNO具体取决于语言环境。

这里是一个Swift 3.0更新版本

 func using12hClockFormat() -> Bool { let formatter = DateFormatter() formatter.locale = Locale.current formatter.dateStyle = .none formatter.timeStyle = .short let dateString = formatter.string(from: Date()) let amRange = dateString.range(of: formatter.amSymbol) let pmRange = dateString.range(of: formatter.pmSymbol) return !(pmRange == nil && amRange == nil) } 

这是为我工作的快速解决scheme,以上两者都没有。

 让dateString:String = DateFormatter.dateFormat(fromTemplate:“j”,options:0,locale:Locale.current)! 

if(dateString.contains("a")){ // 12 h format return true }else{ // 24 h format return false }

这里是Swift版本:

 func using12hClockFormat() -> Bool { let formatter = NSDateFormatter() formatter.locale = NSLocale.currentLocale() formatter.dateStyle = NSDateFormatterStyle.NoStyle formatter.timeStyle = NSDateFormatterStyle.ShortStyle let dateString = formatter.stringFromDate(NSDate()) let amRange = dateString.rangeOfString(formatter.AMSymbol) let pmRange = dateString.rangeOfString(formatter.PMSymbol) return !(pmRange == nil && amRange == nil) }