将UIDatePicker从12小时时钟更改为24小时时钟并返回

时间:2009-06-09 10:41:45

标签: objective-c iphone cocoa-touch uidatepicker

我很抱歉让我的第一个问题变得简单 - 我花了一天时间阅读NSLocale和NSCalendar课程描述,但我看不出这是否可行。

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

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

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

感谢您的任何建议。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我通过使用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小时格式的值。