Detect if time format is in 12hr or 24hr format Detect if time format is in 12hr or 24hr format ios ios

Detect if time format is in 12hr or 24hr format


I figured it out, its pretty easy. I just added this code to 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"));

And it perfectly returns YES or NO depending on the locale.


And here is a Swift 3.0 updated version

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)}


this is swift solution that worked for me, those two above did not.

let 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}