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}