如何在 UIDatePicker 中禁用 AM/PM

Posted

技术标签:

【中文标题】如何在 UIDatePicker 中禁用 AM/PM【英文标题】:How to disable AM/PM in UIDatePicker 【发布时间】:2011-01-09 13:39:47 【问题描述】:

如何在代码/界面生成器中禁用或隐藏 UIDatePicker 中的 AM/PM?

我想在UIDatePicker 中有 24 小时时间选择器模式。 请帮忙

【问题讨论】:

正如此处***.com/questions/1151335/… 和此处***.com/questions/2894161/… 所回答的,选择器显示取决于国家/地区设置,而不是语言设置。在您的示例中,您仅更改语言区域设置。 对于 ios 6 你可以看到我的回答***.com/a/12975871/1376032 【参考方案1】:

根据文档,您应该能够将 UIDatePicker 的 locale 属性设置为使用 24 小时格式的语言环境。

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

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

正如您所建议的,您必须滚动您的获胜日期选择器才能显示 24 小时选择器。

【讨论】:

我试过 en_GB 和 dk_DK 语言环境在模拟器和设备中都不起作用。但我注意到如果你在 iphone 设置中设置 24 小时格式,那么 UIDatepicker 会显示 24 小时时间。那么我应该制作自己的 UIPickerView 还是有办法实现这一点? 我的原始答案错了(现已更新),设备和模拟器都不起作用。已向 Apple 提交错误报告。现在我会按照你的建议做 - 自己动手。 这不是错误,您只是更改了一种语言,而实际上这取决于国家/地区设置。 感谢兄弟的工作... datePicker.datePickerMode =UIDatePickerModeTime; NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"da_DK"]; [datePicker setLocale:locale]; 问题是用户对丹麦语不熟悉。所以解决方案必须被拒绝。【参考方案2】:

AFAIK 你不能(在 SDK 的限制内)。如果用户选择使用 24 小时格式,AP/PM 将消失。如果这很重要,请创建自己的UIPickerView

【讨论】:

【参考方案3】:

上午/下午与 iphone 的区域设置相关联。您可以将选择器的语言环境强制设置为没有 AM/PM 的东西,例如 ro_RO,或者如果您一直想要使用 AM/PM,您可以使用 en_US。对于设置,您可以在右侧的设计器中在英语(美国)等语言环境下或通过代码进行设置

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

【讨论】:

【参考方案4】:

我知道这是旧的......但我最近正在研究这个并通过一些测试发现了这个:

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

这基本上告诉我“语言”是英语(“en”部分),“时间样式”是法语(默认为 24​​ 小时)(“FR”部分)。我通过反复试验将两者结合起来,发现它可以满足我的需求,这只是有一个“日期和时间”选择器,它也可以在 24 小时内选择(选择器上没有 AM/PM 部分,用英语文本)。

问题是,当你在这里获取日期时,语言环境可能是错误的 ->

- (void)changeDate:(UIDatePicker *)sender 

所以这样做是为了修复日期更改选择部分中的语言环境:

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

【讨论】:

【参考方案5】:

这将从选择器中删除 AM/PM...

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

【讨论】:

它还删除了时间!我认为这不是必需的。

以上是关于如何在 UIDatePicker 中禁用 AM/PM的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 的 UIDatePicker 中禁用以前的时间

在 iPhone Objective C 中的 UIDatePicker 中禁用过去日期

如何在 jquery-ui datepicker 中禁用动画?

UIDatePicker 仅显示特定日期

UIDatePicker valuechanged 不会更新第一次旋转,但每次旋转之后都会更新.. iOS

如何将 UIDatePicker 更改为特定时间(在代码中)