yuanpeng1014
极客Victor
2017-03-09 11:24
采纳率: 100%
浏览 4.4k
已采纳

时间戳转时间晚了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];

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • yuanpeng1014
    极客Victor 2017-03-10 08:04
    已采纳

    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];

    点赞 评论
  • caozhy

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

    点赞 评论
  • qq_28511869
    隐身的稻草人 2017-03-09 12:34

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

    点赞 评论
  • oyljerry
    oyljerry 2017-03-09 14:09

    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];
    
    点赞 评论
  • qinqi376990311
    Se7en丶潇洒哥 2017-03-24 01:14

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

    点赞 评论

相关推荐