我试图让用户在各自的当地时间内获得时间,从一天中的特定时段开始计算。
因此,例如,小时是常数,下午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点或其他什么时候)
答案 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"]];