在UIDatepicker中以12和24小时格式显示时间,而不是基于设备设置的应用程序设置

我的问题是,我的应用程序中有一个开关切换12小时和24小时的时间format.I显示我的标签时间根据,但UIDatePicker时间没有得到改变。它的时间取决于设备的时间设置格式。是否有可能根据我的应用程序设置显示时间在UIDatePicker可能不同于设备时间设置。 我读过的某个地方是UIDatePicker仅尊重设备设置,但我仍然想问一下是否可以在UIDatePicker根据我的应用程序设置以12和24小时格式显示时间。

请帮帮我。 任何build议将不胜感激!

对于UIDatePicker您不能将时间格式更改为24或12,这取决于setting.app中的用户本地设置

试试这个代码在DatePicker显示24小时格式:

 NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"NL"]; [self.datePicker setLocale:locale]; 

在Swift中

  // myDatePicker is yourUIDatePicker Outlet @IBOutlet weak var myDatePicker: UIDatePicker! // For 24 Hrs myDatePicker.locale = NSLocale(localeIdentifier: "en_GB") //For 12 Hrs myDatePicker.locale = NSLocale(localeIdentifier: "en_US") 

将您的UIDatepicker设置为具有语言环境属性,以便它不默认用户的语言环境。

下面是这样做的文件 ,并确保设置国家,而不是语言 。

编辑:其实,它看起来像区域设置在iOS 5.0中折旧。 我想苹果认为人们不应该重写它。

我发现一个更简单的方法,单击故事板上的UIDatePicker属性检查器,并将区域设置为“英语(欧洲)”。 这将带走AM / PM切换,并将时间设置为24小时格式。

不需要任何一行代码你可以从故事板设置语言环境,我也附上截图

在这里输入图像说明

而对于这个在swift 3.0编程,我们也可以这样做

 dateTimePicker.locale = Locale(identifier: "en_GB") 

如果我理解你正确,你需要找出设备设置是否有12小时或24小时的格式。 对不起,如果这个解决scheme有点晚了。

  -(BOOL)returnDefaultDateFormat { NSString *formatStringForHours = [NSDateFormatter dateFormatFromTemplate:@"j" options:0 locale:[NSLocale currentLocale]]; NSRange containsA = [formatStringForHours rangeOfString:@"a"]; BOOL hasAMPM = containsA.location != NSNotFound; return hasAMPM; } 

Swift 4版本的ak2g的回答:

 // myDatePicker is yourUIDatePicker Outlet @IBOutlet weak var myDatePicker: UIDatePicker! // For 24 Hrs myDatePicker.locale = Locale(identifier: "en_GB") //For 12 Hrs myDatePicker.locale = Locale(identifier: "en_US") 
Interesting Posts