NSDatePicker时区怪异

时间:2011-08-27 01:54:24

标签: objective-c cocoa nsdate nstimezone nsdatepicker

我的nib文件中有一个NSDatePicker。在代码中,我将其时区设置为GMT日历的时区:

[datePicker setTimeZone:[calendar timeZone]];

我只关心以编程方式填充的datepicker上的时间(小时,分钟):

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.有些奇怪的事情正在某个时间区域进行,但我不知道在哪里......

1 个答案:

答案 0 :(得分:8)

好像我不是第一个遇到这个问题的人。对于那些感兴趣的人,我找到了解决方案http://www.cocoabuilder.com/archive/cocoa/305254-nsdatepicker-weirdness-with-time.html。显然,如果您设置日期选择器的时区而不是日历,则会出现此问题。决议是这样的:

[datePicker setTimeZone:[calendar timeZone]];
[datePicker setCalendar:calendar];