IOS 时区问题

来源:互联网 发布:科比季后赛平均数据 编辑:程序博客网 时间:2024/05/21 11:06

时间转化可以看看这篇文章:http://blog.csdn.net/fengsh998/article/details/9731617


加8个时区

- (NSDate *) addEightTimeZone:(NSDate *)date{    NSTimeZone *zone = [NSTimeZone systemTimeZone];    NSInteger interval = [zone secondsFromGMTForDate: date];    NSDate *localeDate = [date  dateByAddingTimeInterval: interval];    return localeDate;}

 在用NSDateFormatter转出来后带的时间是原参数anydate的时区,因此切不可再用NSDateFormatter 转换。否则会多增加一个时区的时间值。

当多余8个时区时,此时可以用   timeValue = (timeValue -8*60*60*1000);   减去8个时区的时间,就是现在的准确时间了。


- (NSString *)convertStringToTime:(NSString *)timeString{    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];    NSDate*timeDate = [formatter dateFromString:timeString];   // timeDate = [self addEightTimeZone:timeDate];    long long timeStamp = [timeDate timeIntervalSince1970];            NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];   // dat = [self addEightTimeZone:dat];    NSTimeInterval currentStamp=[dat timeIntervalSince1970];            long long val = (currentStamp - timeStamp);        NSString *_timeStr;        if (val > 2*24*60*60) //48以上 月日    {        _timeStr = [NSString stringWithFormat:@"%@",[self ConvertTimeStampToTimeStr:timeStamp                                                                    Format:@"MM月dd日"]];    }        else  if ((val < 2*24*60*60) && (val > 24*60*60)) //48以内 昨天    {        _timeStr = @"昨天";    }        else  if ((val < 24*60*60) && (val > 60*60)) //24小时以内    {        _timeStr = [NSString stringWithFormat:@"%@小时前",[self ConvertTimeStampToTimeStr:val                                                                         Format:@"HH"]];    }        else  if ((val < 60*60) && (val > 60)) //1小时以内    {        _timeStr = [NSString stringWithFormat:@"%@分钟前",[self ConvertTimeStampToTimeStr:val                                                                         Format:@"mm"]];    }        else  if (val < 60) //1分钟以内    {        _timeStr = @"1分钟前";    }        return _timeStr;}- (NSString *)ConvertTimeStampToTimeStr:(long long )timeValue                                 Format:(NSString*)dateFormat{    timeValue = (timeValue - 8*60*60);        NSDate *d = [[NSDate alloc]initWithTimeIntervalSince1970:timeValue];    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];    [formatter setDateFormat:dateFormat];        //d = [self addEightTimeZone:d];    NSString*timeString=[formatter stringFromDate:d];        if ([timeString integerValue] <10)    {        timeString = [NSString stringWithFormat:@"%ld",(long)[timeString integerValue]];    }    return timeString;}


0 0
原创粉丝点击