时间戳转时间晚了8个小时为什么呀?

NSDate* date = [NSDate dateWithTimeIntervalSince1970: message.receivedTime/1000.0];
NSString* dateString = [NSString stringWithFormat:@"%@",date];
NSArray *a = [dateString componentsSeparatedByString:@" "];
groupCell.time.text = [a[1] substringToIndex:[a[1] length] -3];

NSDate* date = [NSDate dateWithTimeIntervalSince1970: message.receivedTime/1000.0];
NSTimeZone zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate: date];
NSDate *localeDate = [date dateByAddingTimeInterval: interval];
NSString
dateString = [NSString stringWithFormat:@"%@",localeDate];
NSArray *a = [dateString componentsSeparatedByString:@" "];
groupCell.time.text = [a[1] substringToIndex:[a[1] length] -3];

看下是不是按照utc时间而不是本地时间转的,中国在东8时区,本地时间比utc时间早8小时。

因为你没有设置服务器的时区,我们的时区比UTC相差8小时

NSDate默认是UTC时间,你需要跟当地时区做转换

 (1) NSDate date = [NSDate date];
或者
NSDate date1 = [[NSDate date] init];
获取的是GMT(格林尼治时间。原点时间)

(2)
NSTimeZone *timeZone = [NSTimeZone systemTimeZone]; // 获取的是系统的时区
NSInteger interval = [timeZone secondsFromGMTForDate: date];// local时间距离GMT的秒数

// 
NSDate *localeDate = [date dateByAddingTimeInterval: interval];

因为中国是GMT+8,所以你算出的时间戳如果是基于中国时间的,那么要加上28800秒