Я искал это, но не смог найти решение, которое соответствует моим потребностям. Мне нужно получить Date типа NSDate, а не String, который включает текущее время определенного часового пояса, чтобы позже сравнить его, чтобы увидеть, находится ли время в диапазоне.
Например, мне нужно посмотреть, открыт ли магазин. Я нахожусь в часовом поясе EST, и сейчас 11:30 вечера, поэтому я вижу расписание магазина, который закрывается в 11, но магазин находится в PST, что означает, что сейчас в этой зоне 10 вечера и все еще открыт. Поэтому мне нужно изменить часовой пояс на часовой магазин, чтобы показать флаг, если он открыт или закрыт прямо сейчас.
Это пример того, что я пробовал:
guard let tz = model?.timeZone else {return "EST"};
let tz = TimeZone.init(abbreviation: timeZone);
df.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ";
let dateString = df.string(from:Date()); //time is correct
let date = df.date(from: dateString); //ignore timeZone and transform to a different date.
Но когда я конвертирую строку, которая содержит время с правильно установленным часовым поясом, и анализирую его обратно в тип даты, он просто игнорирует часовой пояс и отображает другое время.
Я думаю, мне придется сделать что-то вроде разницы между временами и добавить к текущему времени, но я не совсем уверен, как это сделать. Потому что это то, что я тоже пытался сделать:
let localTimeZoneOffset = myTimeZone.secondsFromGMT(for: Date());
let currentTime = Date().addingTimeInterval(TimeInterval(-
localTimeZoneOffset));
Тем не менее, я мог бы быть в любой области, и я хочу посмотреть, открыт ли магазин другой области, есть ли разные часовые пояса как для текущего времени устройства, так и для времени открытия и закрытия магазина. Мое местоположение может быть где угодно, и магазин, который я выбираю, поэтому я думаю, что мне нужно было бы получить разницу обоих времен или что-то в этом роде
Предположим, это информация, которую я получил: Now = Date (); OpenTime = 2018-04-27 11:00:00 +0000; CloseTime = 2018-04-28 03:00:00 +0000; StoreTimeZone = "EST" С этой информацией легко получить информацию, открыт ли магазин или нет, если я нахожусь в месте с другим часовым поясом от магазина? У меня уже есть функции для сравнения - время между OpenTime и CloseTime. Мне просто нужно указать правильное время в магазине, чтобы узнать, открыто оно или нет прямо сейчас.
Заранее спасибо.