2015-07-14 4 views
0

Если я проверить дату в настоящее время я получаю (в 20:05 вечера)Понимание разницы между NSDate часов

2015-07-14 17:05:41 +0000 

Так где разница 3 часа прошло? я предполагаю, что это зона.

Мой основной вопрос: могу ли я оставить его так, как будто он добавит те же часы, когда я установил тревожное уведомление с этой датой?

Например, если я установил будильник в реальном времени - 20:05, на дату, которая показывает 17:05, будет ли это в тот же час дня - означает 20:05 ?? или это неправильно работать так?

+0

Посмотрите на вывод - он показывает вам, что время находится в часовом поясе '+ 0000'. Кажется, вы живете в часовом поясе '+ 0300'. – rmaddy

+0

[точка во времени по сравнению с ее представлением в определенном месте] (http://stackoverflow.com/a/29427932/457406) –

ответ

0

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

NSDate регистрирует дату в UTC, что почти, но не совсем точно так же, как GMT, что является средним временем по Гринвичу (британское летнее время). Если мы посмотрим на наши часы прямо сейчас, мы увидим разные времена, но NSDate сообщит об этом во всем мире.

Если кто-то хочет установить будильник на 20:05 завтра, то вам нужно использовать функции в NSCalendar, чтобы узнать, какой NSDate установить. На 363 днях года, 20:05 завтра - ровно 24 часа или 86 400 секунд после 20:05 сегодня. В два дня года это не так.

Конечно, если я поставил будильник на 20:05 завтра, а затем вылет из Лондона в Нью-Йорк, можно только догадываться, хочу ли я сигнал тревоги в 20:05 по Лондону или Нью-Йорку.

Смежные вопросы