回应iPhone中的夏令时

时间:2014-05-02 05:35:10

标签: ios datetime timezone

我想将当前日期转换为加拿大时间。

显示晚1小时

对于Eg

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm a";
NSTimeZone *utc =[NSTimeZone timeZoneWithAbbreviation:@"UTC-08:00"];
[dateFormatter setTimeZone:utc];
NSString *timeStamp = [dateFormatter stringFromDate:[NSDate date]];

NSLog(@"Time %@ ",timeStamp);

返回

2014-05-01 21:17 PM

但加拿大目前的时间是

2014-05-01 22:17 PM

我想我必须回应夏令时。那么如何在考虑DST的情况下获得时间

加拿大的DST信息 http://www.timeanddate.com/time/change/canada/vancouver

答案:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm a";
NSTimeZone *utc =[NSTimeZone timeZoneWithName:@"America/Vancouver"];
[dateFormatter setTimeZone:utc];
NSString *timeStamp = [dateFormatter stringFromDate:[NSDate date]];

1 个答案:

答案 0 :(得分:2)

您正在指定UTC偏移量。相反,您需要指定时区:

NSDateFormatter* df = [[[NSDateFormatter alloc] init] autorelease];
[df setTimeZone:[NSTimeZone timeZoneWithName:@"__your timezone here__"]];

您可以按如下方式获取支持的时区列表:

NSLog(@"%@", [NSTimeZone knownTimeZoneNames]);