我想将当前日期转换为加拿大时间。
显示晚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]];
答案 0 :(得分:2)
您正在指定UTC偏移量。相反,您需要指定时区:
NSDateFormatter* df = [[[NSDateFormatter alloc] init] autorelease];
[df setTimeZone:[NSTimeZone timeZoneWithName:@"__your timezone here__"]];
您可以按如下方式获取支持的时区列表:
NSLog(@"%@", [NSTimeZone knownTimeZoneNames]);