【问题标题】:Cannot set 24 h format on UIDatePicker in iOS14无法在 iOS14 中的 UIDatePicker 上设置 24 小时格式
【发布时间】:2021-01-17 23:37:14
【问题描述】:

当样式设置为 .compact 时,我无法将 UIDatePicker 设置为 24 小时格式。

当日期选择器的样式设置为 .wheels.inline 时,我可以将格式设置为 24 小时。

如下面的代码所示,我将日期格式化程序上的语言环境设置为“en_GB”以获取 24 小时格式。复制时,模拟器设置为美国作为地区。

如果我不设置语言环境,那么.compact 样式也会显示 AM/PM 选择器,使用下面的代码时不会出现。

这是我的代码,UIDatePicker 被添加为情节提要中的唯一项目:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var datePicker: UIDatePicker!

    var dateFormatter = DateFormatter()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // setting this should give 24 hr format also in United States region, but it doesn't 
        dateFormatter.locale = Locale(identifier: "en_GB") 
    
        datePicker.locale = dateFormatter.locale
        datePicker.datePickerMode = .time
        datePicker.preferredDatePickerStyle = UIDatePickerStyle.compact
    }
}

我在这里遗漏了什么,还是不能为 .compact 样式完成?

【问题讨论】:

  • 尝试在您的设备设置中更改为 24 小时制
  • 谢谢,我试过了,它奏效了。但是,如果您的用户遍布世界各地并且您希望在应用程序中强制执行 24 小时格式,那么这不是一个解决方案。还是谢谢!
  • 我提交了这个问题的答案。如果对您有帮助,请标记为已接受

标签: swift uikit uidatepicker time-format


【解决方案1】:

您无法在应用中更改UIDatePicker 的格式。 日期选择器的格式与用户在设置应用程序中选择的格式相同。只需转到Settings -> General -> Date and Time 即可更改您设备上的格式。

【讨论】:

    【解决方案2】:

    我在 iOS 14 模拟器中对此进行了实验。看来分配属性的顺序很重要。

    这行得通:

    let datePicker = UIDatePicker()
    datePicker.locale = NSLocale(localeIdentifier: "en_GB") as Locale // 24 hour time
    datePicker.timeZone = TimeZone(identifier: "UTC")
    datePicker.datePickerMode = .dateAndTime
    datePicker.preferredDatePickerStyle = .inline
    

    不起作用

    let datePicker = UIDatePicker()
    datePicker.timeZone = TimeZone(identifier: "UTC")
    datePicker.datePickerMode = .dateAndTime
    datePicker.preferredDatePickerStyle = .inline
    datePicker.locale = NSLocale(localeIdentifier: "en_GB") as Locale // 24 hour time
    

    最后放置 Locale 设置似乎不起作用,并暴露了 UIKit 中的一个错误,即 am/pm 设置未暴露,导致只能设置 01-12 小时。

    【讨论】:

    • 我看到了一些类似的东西。当我将“分钟间隔”设置为例如“5”,那么就会出现bug(只有1-12可用,而不是0-23)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 2012-02-13
    相关资源
    最近更新 更多