我得到了当前的 GMT 时间 - 2013-05-15 08:55 AM
我当前的本地时间是 - 2013-05-15 02:06 PM 时区是 - Asia/Kolkata
我试图用这段代码将上面的 GMT 转换为我的本地时间
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"Asia/Kolkata"];
[dateFormatter setTimeZone:sourceTimeZone];
// timeStamp - is the above GMT time
NSDate *dateFromString = [dateFormatter dateFromString:timeStamp];
NSLog(@"local time is %@",dateFromString);
但这给了我错误的时间 - 2013-05-14 19:04:00 +0000 而不是 2013-05-14 02:06 PM
为什么会这样? 请帮我解决这个问题。提前致谢
最佳答案
没有任何问题,NSDate
实例永远不会有时区(当然会有,但它始终是格林威治标准时间,由日期描述中的 +0000
时区指示)。
您在代码中告诉 dateformatter 的是您要解析的日期的时区是 Asia/Kolkata
但你希望它是 GMT
.
首先你需要制作一个NSDate
来自输入日期字符串的对象,时区设置为正确的时区,GMT
正如你所指出的。
NSTimeZone *gmtTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:sourceTimeZone];
NSDate *dateFromString = [dateFormatter dateFromString:timeStamp];
NSLog(@"Input date as GMT: %@",dateFromString);
然后,当您将日期显示为字符串时,请使用:
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithName:@"Asia/Kolkata"];
[dateFormatter setTimeZone:sourceTimeZone];
NSString *dateRepresentation = [dateFormatter stringFromDate:dateFromString];
NSLog(@"Date formated with local time zone: %@",dateRepresentation);
关于iphone - 将 GMT 时间转换为本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16560369/