2014-10-02 49 views
-1

嗨我想显示GMT时间到我的设备时间。 我的设备时区是EDT。NSDate显示错误的日期与NSTimezone

我得到了GMT时间作为字符串

 // GMT Time-----2014-11-27 19:32:00 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"HH:mm:ss"; 
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
[dateFormatter setTimeZone:gmt]; 
NSDate *startDate = [dateFormatter dateFromString:@"2014-11-27 19:32:00"]; 

我得到这个开始日期 -

//startDate---2014-11-27 19:32:00 +0000 

现在我想将其转换成我的本地时间

NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init]; 
dateFormatter2.dateFormat = @"hh:mm a"; 
NSTimeZone *local = [NSTimeZone localTimeZone]; 
[dateFormatter2 setTimeZone:[NSTimeZone localTimeZone]]; 
NSString *startDateStr = [dateFormatter2 stringFromDate:startDate]; 

根据我的时区(EDT),结果必须是 - 3:32 PM 但是我错误的时间是

//startDateStr---02:32 PM 

我有我的打印与GMT

NSLog(@"TimeZone %d",[[NSTimeZone localTimeZone] secondsFromGMT]); 
    // TimeZone -14400  - this correct and as per this the startDate must be 03:32 PM 

时区的区别在哪里,我做了错误? 请帮我

回答

0

非常聪明。您的转换日期为2000年1月1日。因此,夏令时间有所不同。格林威治标准时间19:32在您的时区下午2点32分。但是今天19:32 GMT是你所在时区的3:32 pm。

+0

请参阅我更新的问题。我已经改变了开始日期,但仍然错误的时间。 – 2014-10-02 12:08:32