根据不在设备设置上的应用设置,在UIDatepicker中以12和24小时格式显示时间

Gyp*_*psa 23 iphone objective-c uidatepicker time-format ios

我的问题是有我的应用程序开关,该开关切换12小时和24小时的时间format.I我根据这显示我的标签时间,但UIDatePickerchanged.It的时间取决于设备时间设置时间是没有得到format.Is可以UIDatePicker根据我的应用设置显示时间,这可能与设备时间设置不同.在某处,我读到UIDatePicker仅尊重设备设置,但我仍然想询问是否可以UIDatePicker根据我的应用设置以12小时和24小时格式显示时间.

请帮我.任何建议都将受到高度赞赏!

小智 37

尝试此代码以显示24小时格式DatePicker:

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"NL"];
[self.datePicker setLocale:locale];
Run Code Online (Sandbox Code Playgroud)

  • 它对我有用,谢谢.但是它起作用的原因是什么? (2认同)
  • 错误的解决方案.由于在荷兰语区域设置了选择器,因此可能会导致DateTime选取器出现时间错误! (2认同)

ak2*_*k2g 25

在斯威夫特

    // myDatePicker is yourUIDatePicker Outlet
    @IBOutlet weak var myDatePicker: UIDatePicker!

    // For 24 Hrs 
    myDatePicker.locale = NSLocale(localeIdentifier: "en_GB") as Locale

    //For 12 Hrs
    timePickerView.locale = NSLocale(localeIdentifier: "en_US") as Locale
Run Code Online (Sandbox Code Playgroud)


Oma*_*ith 16

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


小智 10

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")
Run Code Online (Sandbox Code Playgroud)


Jay*_*yas 8

不需要任何单一的代码行.我们也可以从Story Board设置区域设置,我已附上截图.

在此输入图像描述

要以编程方式执行此操作,我们还可以编写以下代码.

dateTimePicker.locale = Locale(identifier: "en_GB")
Run Code Online (Sandbox Code Playgroud)


Dar*_*ari 5

只需使用,24 小时格式:

picker.locale = Locale.init(identifier: "en_gb")
Run Code Online (Sandbox Code Playgroud)

对于 12 小时格式:

picker.locale = Locale.init(identifier: "en_us")
Run Code Online (Sandbox Code Playgroud)

为什么这有效?因为 en_gb 代表英式英语,更喜欢 24 小时格式。您猜对了,en_us 代表美式英语,更喜欢 12 小时格式。