【问题标题】:Change UIDatePicker from 12 hour clock to 24 hour clock and back将 UIDatePicker 从 12 小时制更改为 24 小时制并返回
【发布时间】:2010-11-01 10:37:59
【问题描述】:

很抱歉,我在这里的第一个问题有点简单——我花了一天时间阅读 NSLocale 和 NSCalendar 类的描述,但我看不出这是否可行。

我有一个处于 UIDatePickerModeDateAndTime 模式的 UIDatePicker。它当前根据用户的区域设置显示日期和时间,这是默认行为。

我希望能够提供以 12 小时或 24 小时时间格式显示 UIDatePicker 的选项。检测用户当前使用的时间格式不是问题,但我不清楚如何仅更改 UIDatePicker 的时间格式而不完全丢弃用户的区域设置(因为选择器还显示本地化的天数周和月)。 UIDatePicker 支持设置语言环境和设置日历。

所以,问题一是我是否应该尝试通过 NSLocale 或 NSCalendar 来做这件事,问题二是是否有人可以推荐一种方法来隔离时间格式,而不会丢弃用户的其他区域设置。

感谢您的任何建议。

【问题讨论】:

    标签: objective-c iphone cocoa-touch uidatepicker


    【解决方案1】:

    这不是您要寻找的答案,但在 Cocoa 中,您可以使用 setFormatter 创建 NSDateFormatter 并将其附加到 NSDatePicker(即 NSControl)。不幸的是,等效的 iPhone 类 (UIControl) 尚不支持此功能。我向 Apple 提出了一个错误,这是一个已知问题,尽管他们不会告诉我是否/何时计划修复/增强它。

    【讨论】:

    • 就其价值而言,您所描述的内容在 Cocoa(在 Mac OS X 中)中也不起作用。使用 setFormatter: 向 NSDatePicker 添加日期格式化程序没有任何影响。最接近您可以将区域设置(使用 setLocale:) 设置为使用 24 小时时间的区域设置(如日本)。
    【解决方案2】:

    好的,在阅读了过去两年其他人在这里提出相同问题的价值之后,似乎没有办法做到这一点,因为 UIDatePicker 使用用户的国家/地区设置而不是用户的区域设置,并且可以' t 以编程方式覆盖。我提交了一个错误。

    【讨论】:

      【解决方案3】:

      我已经解决了这个问题,方法是使用 AM/PM 的用户输入,方法是根据 12 小时格式将另一个变量初始化为 AM 或 PM 的字符串。 24 小时格式的新小时被放入 NSCalendar。也就是说:

      var hra = 1//ENTER INITIAL HOUR (HH)
      
      var dna = "PM"//ENTER "AM" OR "PM"
      
      if hra <= 12 && dna == "PM"{
      
           hra = hra + 12
      }
      

      变量 hra 现在采用 24 小时格式的值。

      【讨论】:

        猜你喜欢
        • 2021-12-05
        • 1970-01-01
        • 2017-03-25
        • 1970-01-01
        • 2023-04-05
        • 2023-04-08
        • 1970-01-01
        • 2018-04-13
        • 2021-10-14
        相关资源
        最近更新 更多