假设当前本地时间是15:11UTC。我从服务器中检索到一个数据集,该数据集显示业务的开始关闭时间,如下所示:

{
close = {
   day = 3;
   time = 0200;
};
open = {
   day = 2;
   time = 1700;
};

我还收到一个utc offset属性,显示如下:"utc_offset" = "-420”;我认为这是一个分钟偏移量,给出了7小时的小时偏移量,考虑到我所处的时区是utc,而我接收到的营业地点的营业时间信息是为洛杉矶的一家落后7小时的企业提供的,这似乎是正确的。
如何使用此属性以便能够对其进行任何时间计算
我想确定当前本地时间是否介于我计算出的位的打开时间和关闭时间之间,但考虑到时间比较是在本地时区进行的,在计算该时间范围之前需要对其进行偏移,因此计算结果是错误的。
我尽量避免做
密码:
NSDate.date hour componenent + (UTC_offset / 60 = -7 hours)
更新:
以下是我目前检查公司是否营业的方式
        if currentArmyTime.compare(String(openInfo.time)) != .OrderedAscending && currentArmyTime.compare(String(closeInfo.time)) != .OrderedDescending {
            //The business is open right now, though this will not take into consideration the business's time zone offset.
        }

是否更容易抵消当前时间?

最佳答案

在日期操作中使用“打开”和“关闭”时间之前,需要从已设置为这些时间的时区的日历中创建NSDate。下面是一个例子:

// Create calendar for the time zone
NSInteger timeOffsetInSeconds = -420 * 60;
NSTimeZone *tz = [NSTimeZone timeZoneForSecondsFromGMT:timeOffsetInSeconds];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
calendar.timeZone = tz;

// Create an NSDate from your source data
NSDateComponents *comps = [[NSDateComponents alloc] init];
comps.day = 1;
comps.month = 1;
comps.year = 2016;
comps.hour = 8;
comps.minute = 0;
NSDate *openTime = [calendar dateFromComponents:comps];

// 'openTime' can now be to compared with local time.
NSLog(@"openTime = %@", openTime);  // Result is openTime = 2016-01-01 15:00:00 +0000

您应该将上述代码放入一个方法中,该方法接受要应用的原始时间和时间偏移量。

关于ios - 如何在没有硬编码手动计算的情况下使用UTC时区偏移量来偏移NSDate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38457167/

10-14 21:24