NSDate теперь на 1 час меньше моего эмулятора ios

Привет, я создаю NSDate, который я использую для установки сборщика, но когда я вывожу дату сборщика в NSLog, она всегда на час отстает от времени, показанного в фактическом сборщике.

Также в качестве теста я заметил, что код: NSDate *now = [NSDate date]; // должен дать мне текущую дату и время в моем эмуляторе NSLog(@"Дата и время сейчас: %@", now);

Значение NSLog всегда на 1 час отстает от времени, показанного на моем эмуляторе.

Мой вопрос: почему?

Заранее спасибо :)

ОБНОВИТЬ ------------------------------------------------- -------------------------------

Я сделал еще пару тестов, и оказалось, что NSDate, использующий NSGregorian Calendar, возвращал правильное время, а затем NSDate, использующий currentCalendar, был отключен на 1 час.

Итак, мой новый вопрос: почему это так? Я проверил настройки своего эмулятора, и на устройстве установлен григорианский календарь. Может ли это быть из-за разницы часовых поясов? Если да, то есть ли способ настроить средство выбора на использование того же часового пояса, что и пользовательское устройство?

Спасибо


person N1234    schedule 02.10.2013    source источник
comment
Попробуйте распечатать дату, используя следующую + (id) dateWithNaturalLanguageString: (NSString *) string locale: (id) localeDictionary и используйте [[NSUserDefaults standardUserDefaults] DictionRepresentation] в качестве localeDictionary.   -  person Ben Avery    schedule 03.10.2013
comment
Привет, Бен, спасибо за ваш комментарий, но я получил сообщение об ошибке: «Нет известного метода класса для селектора 'dateWithNaturalLanguageString:'   -  person N1234    schedule 03.10.2013


Ответы (1)


Я думаю, это потому, что время вашего симулятора установлено на часовой пояс по умолчанию (EN). NSDate всегда устанавливается по вашему местному времени. Когда вы попробуете это на своем устройстве, это будет правильно.

у меня есть этот код в моем проекте и отлично работает:

NSDate*now = [NSDate date];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd.MM.yyyy"];

я создаю дату и сохраняю ее в моем CoreData. Всегда это время будет моим фактическим временем на моем устройстве.

В любом случае поздравляю с новым айфоном. Добро пожаловать в большую семью Apple! :)

person Mayo323    schedule 03.10.2013
comment
Привет Mayo323, спасибо за ваш комментарий, и вы правы, NSDate действительно возвращает правильное время. Я сделал еще пару тестов, и оказалось, что NSDate, использующий NSGregorian Calendar, возвращал правильное время, а затем NSDate, использующий currentCalendar, был отключен на 1 час. Итак, мой новый вопрос: почему это так? Я проверил настройки своего эмулятора, и на устройстве установлен григорианский календарь. Как я могу сделать так, чтобы мой сборщик имел тот же часовой пояс, что и мой эмулятор/устройство? - person N1234; 03.10.2013
comment
Эмулятор всегда будет -1 час. На устройстве будет время из местного часового пояса вашего устройства. - person Mayo323; 03.10.2013
comment
Не смейтесь, но у меня пока нет айфона, чтобы протестировать приложение. Хотя скоро я его получу. Спасибо за вашу помощь, и я отмечу ваш ответ как правильный (в чем я уверен) :) - person N1234; 04.10.2013
comment
Привет, Mayo323, я наконец-то получил свой iPhone с iOS 7.0.2, и дата и время, возвращенные из даты в средстве выбора на моем устройстве, все еще отображаются как отставание на час в моем NSLog. Так что, боюсь, мне пришлось снять отметку с вашего ответа. - person N1234; 13.10.2013