4

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

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

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

4

3 回答 3

1

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

在此处输入图像描述

于 2016-10-27T11:45:52.663 回答
0

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

于 2013-04-23T13:40:04.520 回答
0

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

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

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

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

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

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

于 2016-06-12T17:36:32.717 回答