响应iPhone中的夏令时



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

显示延迟1小时

例如

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

但目前在加拿大的时间是

2014-05-01 22:17下午

我想我必须响应夏令时。那么如何获得考虑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]];

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

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

您可以获得支持的时区列表,如下所示:

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

最新更新