Jon*_*asG 39 cocoa-touch objective-c nstimezone ios
有没有办法检测应用程序的当前设备是否使用12h我们的24h格式,以便我可以使用一个NSDateFormatter 12h和一个24h取决于用户语言/ loaction设置?就像UIDatePicker检测并显示AM/PM选择器(如果它是12h格式).
Jon*_*asG 81
我想通了,很简单.我刚刚将此代码添加到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"));
Run Code Online (Sandbox Code Playgroud)
它完全返回YES或NO取决于区域设置.
Mos*_*erg 11
这是一个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)
}
Run Code Online (Sandbox Code Playgroud)
这是对我有用的快速解决方案,上面的两个没有。
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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23128 次 |
| 最近记录: |