NSDate timeIntervalSinceNow и местный часовой пояс?

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

NSTimeInterval approachInterval = [futureDate timeIntervalSinceNow];

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

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


person fuzzygoat    schedule 31.07.2013    source источник


Ответы (1)


NSDate представляет один момент времени. У него нет (и не нужно!!) часового пояса. Таким образом, "известная futureDate (в формате GMT/UTC)" или "я не могу предоставить NSDate с правильным часовым поясом" не имеет смысла.

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

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

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