【问题标题】:UIDatePicker change localeUIDatePicker 更改语言环境
【发布时间】:2013-04-23 13:28:11
【问题描述】:

我正在尝试像这样更改 UIDatePicker 的语言环境:

  picker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

它可以工作,但是设置区域设置后选择器不符合时间格式的系统设置。我的意思是 24 小时/(上午/下午)。我做错了什么?

【问题讨论】:

  • 能否提供更改语言环境前后结果的调试日志?
  • 您能提供更多代码吗?
  • 没有任何日志。我像往常一样在 viewDidLoad 中创建 UIDatePicker。 _datePicker = [UIDatePicker 新];并在 viewWillAppear 中设置语言环境,如 picker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
  • 并且在设置中启用了 24 小时制格式,但选择器显示 AM/PM 轮

标签: ios objective-c uidatepicker


【解决方案1】:

在 xCode 中:- 在本地部分你可以设置它;

【讨论】:

    【解决方案2】:

    你没有做错任何事。日期/时间格式由语言环境决定。 en_US 使用 12 小时 AM/PM 格式:http://demo.icu-project.org/icu-bin/locexp?_=en_US

    【讨论】:

    • 谢谢,但是我应该怎么做才能支持这两种时间格式?我更改时间格式的原因是选择器显示我的本地语言而不是当前设置的英语。
    • 很遗憾,您无法微调日期选择器的日期格式。您可以尝试设置多个区域设置和日历,然后选择最适合您的要求。
    【解决方案3】:

    如果要支持用户所需的时间格式,标记的答案并不完全正确。

    如果您将选择器区域设置为默认值(设备的区域),则选择器将使用该特定区域设置的 12/24 小时格式。在美国这将是 12 小时,而在英国则是 24 小时。

    但是,如果用户手动将其设备更改为 12/24,您的选择器将不会使用此样式。

    如果您的选择器只使用时间而不是日期+时间,您可以使用以下几种方法解决此问题:

    1. 手动检测设备是否为 12/24,然后选择语言环境 en_US 为 12 小时,en_GB 为 24 小时。
    2. 不要设置语言环境,只设置timeStyle为NSDateFormatterShortStyle,这会自动选择设备设置中选择的时间格式。

    如果您使用的是日期+时间,那么您需要将区域设置设置为设备的区域设置,以便以正确的语言和格式获取日期,但这会忽略设备上设置的时间格式。

    【讨论】:

    • 您能详细解释一下吗?将时间格式设置为HH:mm 是什么意思?我应该在哪里设置? UIDatePicker 没有 timeFormat