特定小时的时区和偏移量

时间:2015-04-15 21:52:42

标签: ios nsdate nsdateformatter

我试图让用户在各自的当地时间内获得时间,从一天中的特定时段开始计算。

因此,例如,小时是常数,下午4点

字符串将如下所示:

您的套餐将在晚上11点准备好(用户时间以小时/时间+当地时间缩写)

所以:

  

您的套餐将于晚上11点(美国东部时间晚上7点)准备好

我很难计算从UTC时间晚上11点起的时间。

这就是我所拥有的:

float timezoneoffset = ([[NSTimeZone systemTimeZone] secondsFromGMT] /3600.0);
//Gets time zone hours away from GMT/UTC time in this case -4

我知道如何从日期开始获取日期,但在我的情况下,它将始终是UTC时间晚上11点或无论数字设置为何。那么你怎么从任何一天的某个小时得到约会(总是不变,总是在晚上11点或其他什么时候)

1 个答案:

答案 0 :(得分:0)

Welp在玩了几个小时之后,这就是我提出来的。

[NSDate date]

默认情况下自动为UTC或GMT时间。所以我从那里开始使用NSDateComponents强制在我想要的时间开始日期,并从timezoneoffset值中减去/添加:

 float timezoneoffset = [[NSTimeZone systemTimeZone] secondsFromGMT];

    NSDateComponents *components = [[NSDateComponents alloc] init];
    [components setHour:23];
    [components setMinute:0];
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    [calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

    NSDate *maintenanceDateTime = [calendar dateFromComponents:components];
    NSDate *localTimeFromUTC = [NSDate dateWithTimeInterval:timezoneoffset sinceDate:maintenanceDateTime];

    NSDateFormatter *utc_formatter = [[NSDateFormatter alloc] init];
    [utc_formatter setDateFormat:@"HHmm"];
    [utc_formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];