iphone - 将 GMT 时间转换为本地时间

标签 iphone ios objective-c nsdate nstimezone

我得到了当前的 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/

相关文章:

ios - objective-c - 集合关系(核心数据)

ios - NSLinguisticTagger enumerateTagsInRange 在具有 NSLinguisticTagSchemeNameTypeOrLexicalClass 的设备上不起作用

应用内购买的 iOS 提交问题

iphone - 程序收到信号 "EXC_Bad_Access"NSMutableArray

objective-c - 如何根据对象的属性对数组进行排序?

ios - TableView 中的 UIBlurEffect 在转换时似乎在背景中抽动或移动

iphone - 使用 CFDictionaryCreate 和特殊字符创建 CFDictionaryRef

iphone - AFNetworking 监控所有下载过程

iphone - iPhone 的 SSL 证书 -> 哪个 CA?

android - iPhone 上的 Bootstrap 网格系统