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

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

  • Objective-C:前向类声明
  • 将目标C中的下一个整数向上舍入?
  • UITableView问题,当使用单独的委托/数据源
  • iPhone - 时区便利方法之间的差异
  • UITableView:从空白部分隐藏标题
  • 如何获得本地化的取消,完成等?
  • animationUIButton状态更改
  • 如何构build一个Objective-C静态库?
  • 4 Solutions collect form web for “检测时间格式是12小时制还是24小时制”

    我明白了,这很容易。 我只是把这个代码添加到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) }