我一直在寻找这个,但无法找到与我的需求正确对应的解决方案 . 我需要获取NSDate类型的日期,而不是字符串,其中包括特定时区的当前时间,以便稍后比较它以查看时间是否在范围之间 .
例如,我需要查看商店是否已打开 . 我在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.
但是当我转换包含时间的String并正确设置时区并将其解析回Date类型时,它只是忽略timeZone并显示不同的时间 . 我想我将不得不做一些事情,比如获取时间之间的差异并添加到当前时间,但我不确定如何完成这项工作 . 因为这也是我一直在尝试做的事情:
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之间我只需要在商店中传递正确的时间,如果它现在打开或不正常 .
提前致谢 .
1 回答
这是我的解决方案 . 我在一个方便的地方为JSON添加了一个时区;您需要适应以允许在您的数据中定位时区 .