UIDatePicker更改区域设置

时间:2013-04-23 13:28:12

标签: ios objective-c uidatepicker

我正在尝试更改UIDatePicker的区域设置,如下所示:

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

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

3 个答案:

答案 0 :(得分:1)

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

enter image description here

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

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

  1. 手动检测设备是否为12/24,然后选择locale en_US 12小时和en_GB 24小时。
  2. 不要设置区域设置,只将timeStyle设置为NSDateFormatterShortStyle,这将自动选择从设备设置中选择的时间格式。
  3. 如果您正在使用日期+时间,那么您需要将区域设置设置为设备的区域设置,以便以正确的语言和格式获取日期,但这将忽略设备上设置的时间格式。 / p>