[[NSDate date] timeIntervalSince1970] похоже, на 1 час позади - PullRequest
7 голосов
/ 19 июля 2011

Я пишу приложение, которое взаимодействует с некоторыми веб-сервисами. Когда переменная обновляется на сервере, она возвращает метку времени Unix, чтобы сообщить мне, когда она была обновлена. Затем я могу сравнить его с помощью:

[[NSDate date]timeIntervalSince1970] 

чтобы все было синхронизировано.

Системное время на iPhone правильное. Но время Unix, похоже, отстает от сервера на 1 час (и системное время, как показано на часах). Почему это происходит? Нужно ли устанавливать часовой пояс?

Ответы [ 2 ]

12 голосов
/ 19 июля 2011

timeIntervalSince1970 определено для возврата:

Интервал между получателем и контрольной датой, 1 января 1970, GMT.

Возможно ли, что вы сравниваете время с 1 января 1970 года в каком-то другом часовом поясе? Если это так, то проще всего использовать timeIntervalSinceDate: вместо timeIntervalSince1970, возможно, использовав dateByAddingTimeInterval: NSDate для перехода от контрольной даты в GMT к контрольной дате в вашем идеальном часовом поясе.

Вы можете использовать свойство secondsFromGMTForDate: NSTimeZone, если не хотите жестко кодировать вещи.

1 голос
/ 19 июля 2011

Как можно понять из вашего вопроса, проблема в метке времени, возвращаемой сервером. Поэтому реальный вопрос в том, есть ли у вас доступ к этому серверу. Или вы знаете, в каком часовом поясе это. Если сначала, обновите время на сервере. Второе - вычислите разницу между часовыми поясами (вы говорите, что это час) и добавьте ее в свой экземпляр NSDate. Вы также можете использовать NSCalendar, так как он имеет метод -(void)setTimeZone:(NSTimeZone *)timezone;. (Хотя это может потребоваться для ваших нужд)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...