2013-07-31 1 views
1

Я делаю расчет, чтобы найти NSTimeInterval между известным futureDate (который находится в GMT/UTC) и текущее время (и часовой пояс), где в настоящее время находится устройство.NSDate timeIntervalSinceNow и местный часовой пояс?

NSTimeInterval approachInterval = [futureDate timeIntervalSinceNow]; 

Я знаю, что NSDate не хранит никаких TIMEZONE конкретных данных, это скорее нечто, что рассчитывается, когда потребность даты отображения на устройстве.

Мой вопрос в том, что из моих первоначальных тестов (я в настоящее время в GMT + 0001) кажется, что возвращенный NSTimeInterval не учитывает мой местный часовой пояс. Должна ли я вручную рассчитать смещение часового пояса и удалить, что из моего интервала, и что будет лучшим способом сделать это, учитывая, что я не могу поставлять NSDate с правильной временной зоной (с помощью timeIntervalSinceDate:, например)

ответ

4

NSDate представляет собой единый момент времени. Он не имеет (и не нужен !!) часовой пояс. Итак, «известное будущее (которое находится в GMT/UTC)» или «Я не могу предоставить NSDate с правильным часовым поясом» не имеет смысла.

[futureDate timeIntervalSinceNow] возвращает временной интервал между futureDate и текущей датой и временем и полностью не зависит от часовых поясов.

Если вы не получили ожидаемый результат, то, возможно, ваш расчет futureDate был неправильным.

+0

Спасибо за ответ, я понимаю, что я сказал, что будущий futureDate, потому что эта дата на самом деле находится в UTC +0000, поэтому должна быть правильной относительно того, что вы вернетесь от выполнения [NSDate date]; Я вижу вашу точку зрения, забывая время Zone и NSTimeInterval и my futureDate равны +0000, поэтому относительный интервал между ними должен быть правильным. Я проверю округление и удостоверьтесь, что я не отбрасываю несколько интервалов где-то в моих расчетах. Очень признателен. – fuzzygoat