格林威治标准时间显示错误日期5小时。背部

时间:2014-12-12 14:34:42

标签: ios nstimezone

我使用此代码显示我从服务器获取的日期,但是使用GMT时显示的时间为5小时。回

-(NSString *)getDateStringFromServer:(NSDate *)date{
  NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
  [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:+0000]];
  [formatter setDateFormat:@"dd MMM yyyy h:mm a"];
  NSString *dateAsString = [formatter stringFromDate:date]; 
  return dateAsString;
}

1 个答案:

答案 0 :(得分:1)

相应地设置时区。 当你使用+0000

时根据gmt获得时间
[NSTimeZone timeZoneForSecondsFromGMT:+0000]

根据您的时区获取时间根据您的时区设置秒差。 我的时区是GMT + 5 我设置了+(3600 * 5)。

[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:+(3600*5)]];

并得到正确的输出“2014年12月12日下午7:55”。

以前是“2014年12月12日下午7:55”,+ 0000,错了,5小时后......

更新: 正如@Tom Harrington所建议的那样,你应该使用本地时间而不是timezoneforSecondsFromGmt。

[formatter setTimeZone:[NSTimeZone localTimeZone]];