5

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と表示されます。どこかのタイムゾーンで何か奇妙なことが起こっていますが、どこにあるのかわかりません...

4

1 に答える 1

8

この問題に出くわしたのは私が初めてではないようです。興味のある人のための解決策は、ここで見つかりましたhttp://www.cocoabuilder.com/archive/cocoa/305254-nsdatepicker-weirdness-with-time.html。どうやら、カレンダーではなく日付ピッカーのタイムゾーンを設定すると、この問題が発生します。解決策は次のとおりです。

[datePicker setTimeZone:[calendar timeZone]];
[datePicker setCalendar:calendar];
于 2011-08-27T02:09:06.397 に答える