我正在尝试使用指定的时区名称获取日期,例如“America / New_York”。出于某种原因,当我选择正确的时区“America / Chicago”时,它会显示正确的时间(例如,下午9:41)。然而,当我选择纽约时,它应该显示一小时(预计晚上10点41分),但我比我当前时间晚了一小时(我得到的结果:晚上8点41分)。
- (NSDate*)dateFromTimezone:(NSTimeZone*)timezone
{
timezone = ( timezone == nil ? [NSTimeZone timeZoneWithName:CUSTOMTIMEZONE] : timezone );
NSDate * date = [NSDate date];
NSCalendarUnit units = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:timezone];
[gregorian components:units fromDate:date];
NSDateComponents* dateComponents = [[NSCalendar currentCalendar] components:units fromDate:date];
[dateComponents setTimeZone:timezone];
[dateComponents setCalendar:gregorian];
return [gregorian dateFromComponents:dateComponents];
}