[英]iOS: convert UTC timezone to device local timezone
I am trying to convert the following timezone to device local timezone: 我想将以下时区转换为设备本地时区:
2013-08-03T05:38:39.590Z
Please let me know how to convert it to local timezone. 请让我知道如何将其转换为本地时区。
How do I do it? 我该怎么做?
Time zones can be applied to NSDateFormatter , from which you can generate NSDate variables differentiated by the time difference. 时区可以应用于NSDateFormatter ,您可以从中生成由时差区分的NSDate变量。
NSString* input = @"2013-08-03T05:38:39.590Z";
NSString* format = @"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
// Set up an NSDateFormatter for UTC time zone
NSDateFormatter* formatterUtc = [[NSDateFormatter alloc] init];
[formatterUtc setDateFormat:format];
[formatterUtc setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
// Cast the input string to NSDate
NSDate* utcDate = [formatterUtc dateFromString:input];
// Set up an NSDateFormatter for the device's local time zone
NSDateFormatter* formatterLocal = [[NSDateFormatter alloc] init];
[formatterLocal setDateFormat:format];
[formatterLocal setTimeZone:[NSTimeZone localTimeZone]];
// Create local NSDate with time zone difference
NSDate* localDate = [formatterUtc dateFromString:[formatterLocal stringFromDate:utcDate]];
NSLog(@"utc: %@", utcDate);
NSLog(@"local: %@", localDate);
[formatterUtc release];
[formatterLocal release];
Try like this: 试试这样:
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
NSDate* utcTime = [dateFormatter dateFromString:@"2013-08-03T05:38:39.590Z"];
NSLog(@"UTC time: %@", utcTime);
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
[dateFormatter setDateFormat:@"M/d/yy 'at' h:mma"];
NSString* localTime = [dateFormatter stringFromDate:utcTime];
NSLog(@"localTime:%@", localTime);
Hope it helps you.... 希望它可以帮助你......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.