我的 nib 文件中有一个 NSDatePicker。在代码中,我将它的时区设置为 GMT 日历的时区:
[datePicker setTimeZone:[calendar timeZone]];
我只关心我以编程方式填充的日期选择器上的时间(小时、分钟):
NSDate *anyDate = [NSDate date];
NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:anyDate];
[components setHour:hours];
[components setMinute:minutes];
NSDate *newDate = [calendar dateFromComponents:components];
[datePicker setDateValue:newDate];
这正确地具有将日期选择器时间设置为我想要的时间的预期效果。因此,如果小时数为 8,分钟数为 30,则日期选择器显示 8:30。但是,如果我在日期选择器的小时字段中输入 8,它将显示为 3。某处的时区发生了一些奇怪的事情,但我不确定在哪里......