具有区域设置兼容性的自定义 UIPickerView



我正在从UIPickerView制作一个自定义TimePicker。除了显示小时数外,我让它工作得很好。我希望它像UIDatePicker一样运行,以便它遵循用户Locale设置。如果他们选择了法语,则时间应以 24 小时格式显示。如果他们有美国,它应该以 12 小时格式显示。

我有一个从 0 到 23 的数组hoursArray。然后,我运行此代码以将其转换为所需的格式。但是,如果在"设置"-"国际"部分中设置了该选项,则它不想更改为24小时格式>

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[NSLocale currentLocale]];//[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"H"];
NSDate *tempDate = [dateFormatter dateFromString:[hoursArray objectAtIndex:row]];
[dateFormatter setDateFormat:@"h"];
return [dateFormatter stringFromDate:tempDate];

我尝试将[dateFormatter setDateFormat:@"h"];更改为[dateFormatter setDateFormat:@"H"];,因为Apple的文档说用户的个人区域设置将覆盖它,但情况似乎并非如此。

如何让dateFormatter正确遵循用户区域设置?

就我而言,覆盖用户首选项效果很好,这对我来说是一件坏事!!尝试将日期格式化程序的区域设置为

[dateFormatter setLocale:[NSLocale systemLocale]];

如果这不起作用,请尝试删除设置区域设置的代码,因为 NSDateFormatter 会自动考虑用户设置。

最新更新