Временные метки, не зависящие от часового пояса/перехода на летнее время, с помощью NSDate

Я создаю объекты, которые будут отправлены на сервер, и я пытаюсь убедиться, что я учитываю проблемы с часовым поясом и переходом на летнее время, поэтому я хочу, чтобы мои метки времени были «секундами с 1970 года» независимо от часового пояса и т. д.

Достаточно ли [NSDate timeintervalSinceReferenceDate] для этого? Я знаю, что в документах указано время с January 1 1970 00:00:00 GMT, чего я и хочу, но как NSDate обрабатывает часовые пояса? Если пользователь отправляет объект со своим устройством, настроенным на EST, а затем меняет свое устройство на PST, какие последствия это будет иметь для временных меток? Моя цель состоит в том, чтобы это не имело значения, и я не могу понять это из документации.

Программирование даты — сложная задача, и я хочу убедиться, что правильно ее понимаю.


person jbrennan    schedule 23.07.2010    source источник


Ответы (1)


В документации указано, что timeIntervalSinceReferenceDate указывает время с 2001 года. timeIntervalSince1970 возвращает время с 1970 года.

Но в любом случае NSDate описывает момент времени. Часовой пояс пользователя влияет только на способ отображения даты пользователю (например, с помощью NSDateFormatter). Так что вам не нужно беспокоиться о часовых поясах.

Но, возможно, вам действительно нужно беспокоиться о том, что часы пользователя ошибаются. Пользователь может установить свои часы на все, что захочет, поэтому вам не следует доверять им что-либо критически важное. Вместо этого используйте часы сервера.

person nschum    schedule 25.07.2010