NSDate раньше на 1 час?

Я использую следующий код для установки объекта даты:

NSDate *date = [NSDate date];
        NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
        NSDateComponents *components = [gregorian components: NSUIntegerMax fromDate: date];
        [components setHour: 18];
        [components setMinute: 00];
        [components setSecond: 00];

        reminderDate = [gregorian dateFromComponents: components];

Однако, когда я использую NSLog напоминание о дате, я получаю следующий вывод:

Time: 2012-08-29 17:00:00 +0000

Это раньше на один час. Кто-нибудь может объяснить, что мне нужно сделать, чтобы сохранить правильную дату в reminderDate?

Спасибо,

Тысин


person Jack Nutkins    schedule 29.08.2012    source источник
comment
возможный дубликат Получение даты с [даты NSDate] отключено несколько часов   -  person jscs    schedule 29.08.2012


Ответы (1)


Какой у вас часовой пояс? Если вы заметили, дата, которую вы печатаете, имеет часовой пояс +0, поэтому, если ваш часовой пояс +1, все правильно.

person alfonsomiranda    schedule 29.08.2012
comment
Я попытался установить часовой пояс для использования моего местного часового пояса с помощью NSTimeZone localTimeZone, но изменений не произошло. В настоящее время я нахожусь в британском летнем времени, которое составляет GMT + 1. - person Jack Nutkins; 29.08.2012
comment
Это означает, что дата в журнале правильная, так как она отображается без часового пояса, следовательно +0000 - person rckoenes; 29.08.2012
comment
Дата в журнале неверна, если я сделаю это: NSLog(@Current Date: %@, [NSDate date]); дата напечатана также на 1 час раньше, чем должна быть. - person Jack Nutkins; 29.08.2012
comment
Журнал правильный, NSLog всегда печатает с часовым поясом +0. Если у вас другой часовой пояс, преобразуйте дату в часовой пояс +0. - person alfonsomiranda; 29.08.2012