Я пытаюсь написать код для приложения для планирования, и эти расписания должны основываться на текущем времени пользователя. Например, что-то доступно с 17:00 до 21:00 в текущий день. Когда я получаю текущее время с помощью NSDate(), печать его приводит к utc: 2016-12-15 13:12:05 +0000. Я знаю, что это в utc, потому что, если я добавлю свое местное смещение в моей голове, это будет фактическое время на моем телефоне. Проблема, с которой я сталкиваюсь, заключается в попытке создать эти окна времени, иногда время окончания идет на следующий день, потому что нет никакого смещения. Пример: смещение часового пояса пользователя -5, а в настоящее время - в 21:00 по местному времени. Это покажет 2 утра на следующий день, который не сработает, потому что мне нужно, чтобы он был в тот же день. Как вы управляете этим делом? Я не уверен, что функция print() даже печатает правильную дату. Подходит ли он к часовому поясу моей машины? Мне нужно увидеть фактические даты, потому что мне приходится иметь дело с часовыми поясами по всему миру. Я попытался сменить зону +5 раз, и весь мой код планирования ломается. Как я могу гарантировать, что мой планировщик всегда будет работать с местным временем пользователя?Swift NSDate, показывающий UTC при печати в отладчике. Как узнать, является ли это местным временем или utc при сравнении даты/времени?
Если кто-то сделал это, было бы полезно, если бы вы могли показать, как создать дату начала, дату окончания, а затем, как сравнить с текущей датой, чтобы увидеть, действительно ли она или не попадает в окно. Это необходимо для работы во всех часовых поясах.
Редактировать: Вот что я не понимаю. Как обрабатывать даты, которые находятся в форме такой строки: «2016-12-15T22: 16: 11 + 05: 00», где дата и время находятся в «местном времени»? Я знаю, что дата находится в местном времени, потому что это то, что было отображено на моем телефоне, когда я сгенерировал его (15 декабря 10 вечера). Теперь, когда у меня есть эта дата, я хочу знать, попадает ли она между окном 8 вечера и 11 вечера 15 декабря. Как мне это сделать? Когда я конвертирую эту строку в NSDate, она скрывает ее до UTC (это то, что я вижу в отладчике), и теперь дата составляет +5 часов с местного времени (что происходит на следующий день). Проблема в том, что я сравниваю дату на следующий день с текущей датой, например, текущая дата/время - 15 декабря 9 вечера. Но мне нужно знать, что дата указана 15 декабря 10 вечера.
Опубликуйте свой текущий код, который не работает – dan
FYI - когда вы видите '2016-12-15 13:12:05 + 0000', вы знаете, что это UTC, потому что это означает' + 0000'. Это часовой пояс. UTC - часовой пояс '+ 0000'. – rmaddy