如何在UIDatePicker中禁用AM/PM

22
如何在代码或界面构建器中禁用或隐藏UIDatePicker中的 AM/PM?
我想要使用 24 小时时间选择模式在 UIDatePicker 中。请帮忙。

正如在这里 https://dev59.com/FkjSa4cB1Zd3GeqPF4BY#2265984 和这里 https://dev59.com/k3E85IYBdhLWcg3wMQlm#2918507 中所回答的,选择器显示取决于国家设置,而不是语言设置。在您的示例中,您只更改了语言区域设置。 - Vlad Grichina
对于iOS 6,您可以查看我的答案https://dev59.com/FkjSa4cB1Zd3GeqPF4BY#12975871 - FunkyKat
5个回答

16

根据文档,您应该能够将locale属性设置为使用24小时制的区域设置。

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"da_DK"];
[datePicker setLocale:locale];
[locale release];

很遗憾,有一个错误导致模拟器和设备都根据用户的国际偏好继续布局日期选择器。

正如您所建议的那样,您必须自己编写日期选择器以能够显示24小时制的选择器。


1
我尝试了en_GB和dk_DK的语言环境,但在模拟器和设备上都不起作用。但是我注意到,如果你在iPhone的设置中将时间格式设置为24小时制,则UIDatepicker会显示24小时制时间。那么,是应该自己制作一个UIPickerView还是有其他方法可以实现这个功能呢? - Binay Shrestha
我在原回答中犯了错误(现已更新),无论是设备还是模拟器都无法工作。已向苹果提交了一个错误报告。 目前,我会按照您的建议自己编写代码。 - Niels Castle
1
谢谢兄弟,它可以工作了... datePicker.datePickerMode = UIDatePickerModeTime; NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"da_DK"]; [datePicker setLocale:locale]; - Sawan Cool
问题在于用户不熟悉丹麦语。因此,这个解决方案必须被拒绝。 - DawnSong
这是一个例子。为了简洁起见,它列出了一个语言环境。 - Niels Castle
显示剩余2条评论

7
据我所知,在SDK的限制范围内,你无法实现这一点。如果用户选择使用24小时格式,AP / PM将消失。如果这很重要,请自己创建UIPickerView。

4

AM/PM 与 iPhone 的语言环境设置相关联。您可以将选择器的语言环境强制更改为不包含 AM/PM 的语言环境,如 ro_RO。如果您始终需要 AM/PM,则可以选择 en_US。要进行设置,您可以在设计师中右侧的语言环境下,像 English(United States)一样进行设置,也可以通过以下代码来实现:

[timePicker setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US"]];


1

我知道这是旧的……但最近我在研究这个,通过一些测试找到了以下内容:

[datePicker setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_FR"]];

这基本上告诉我“语言”是英语(“en”部分),而“时间风格”是法语(默认为24小时制)(“FR”部分)。我通过试错将两者结合起来,发现它对我想要的东西有效,即只需拥有“日期和时间”选择器,也可以选择24小时制(选择器上没有AM / PM部分,以英文文本显示)。
问题在于,当你在此处获取日期时,语言环境可能是错误的。
- (void)changeDate:(UIDatePicker *)sender {

所以,要修复日期更改选择部分中的语言环境,请执行以下操作:
[sender setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_FR"]];

-4

这将从选择器中删除上午/下午...

UIDatePicker *myDatePicker = [[UIDatePicker alloc]init];
[myDatePicker setDatePickerMode:UIDatePickerModeDate];

6
它还能去除时间!我认为这并不是所需的。 - jrturton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接