ios中日期的时区转换

时间:2014-07-05 08:45:44

标签: ios objective-c nsdate nsdateformatter

我从webservice获得这种格式的时间: 2014-07-26 21:00:00 ,时区偏移: GMT + 0100 。我需要将此转换为 GMT 区域和本地时区。

例如:

原始日期: 2014-07-26 21:00:00

转换

GMT: 2014-07-26 20:00:00

我在印度的时区意味着我需要 2014-07-27 01:30:00

我尝试了很多方法,但我找不到任何解决方案..请帮我解决这个问题..

1 个答案:

答案 0 :(得分:2)

首先,您必须将输入日期字符串转换为NSDate。 这是通过NSDateFormatter完成的,其中日期格式与输入字符串匹配。 在您的情况下,您将明确设置时区:

NSString *origDateString = @"2014-07-26 21:00:00";

NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
[fmt setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[fmt setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT+0100"]];
NSDate *date = [fmt dateFromString:origDateString];

现在您可以根据不同的时间将NSDate转换回字符串 区:

[fmt setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSString *gmtDateString = [fmt stringFromDate:date];
NSLog(@"%@", gmtDateString);
// 2014-07-26 20:00:00

[fmt setTimeZone:[NSTimeZone localTimeZone]];
NSString *localDateString = [fmt stringFromDate:date];
NSLog(@"%@", localDateString);
// 2014-07-26 22:00:00 (my GMT offset is +02:00)