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

时间:2012-10-03 19:12:45

标签: objective-c ios datetime nsdateformatter

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

我有一个数组hoursArray,从0到23.我然后运行此代码将其转换为所需的格式。但是,如果在“设置”中设置了该选项,则不希望更改为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"];,因为Apples doc说用户个人区域设置会覆盖它,但似乎并非如此。

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

1 个答案:

答案 0 :(得分:0)

在我的情况下,覆盖用户的偏好工作正常,这对我来说是件坏事。尝试将日期格式化程序的区域设置设置为

[dateFormatter setLocale:[NSLocale systemLocale]];

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