美文网首页
时间戳转换

时间戳转换

作者: 安静就好_ | 来源:发表于2017-08-26 17:07 被阅读242次

后台返回的数据有的是时间戳,有的是返回日期数据,我这里是时间戳

时间戳转时间格式


// timeStampString 是服务器返回的13位时间戳
 NSString *timeStampString  = @"1495453213000";
  
 // iOS 生成的时间戳是10位
 NSTimeInterval interval    =[timeStampString doubleValue] / 1000.0;
 NSDate *date               = [NSDate dateWithTimeIntervalSince1970:interval];
  
 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//具体转换成什么样式的看你们项目需求,如果需要的是yyyy-MM-dd一定记住要把
空字符串给清掉,不然会出问题的
 [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
 NSString *dateString       = [formatter stringFromDate: date];
 NSLog(@"服务器返回的时间戳对应的时间是:%@",dateString);

时间转时间戳(毫秒值)

#pragma mark - 时间转时间戳
+ (NSString *)getTimeStrWithString:(NSString *)str{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];// 创建一个时间格式化对象
    [dateFormatter setDateFormat:@"YYYY-MM-dd"]; //设定时间的格式
    NSDate *tempDate = [dateFormatter dateFromString:str];//将字符串转换为时间对象
    NSString *timeStr = [NSString stringWithFormat:@"%ld", (long)[tempDate timeIntervalSince1970]*1000];//字符串转成时间戳,精确到毫秒*1000
    return timeStr;
}

比较日期差

//比较两个日期大小
-(NSInteger)compare:(NSDate *)startTime to:(NSDate *)endTime{

    // 当前日历
    NSCalendar *calendar = [NSCalendar currentCalendar];
    // 需要对比的时间数据
    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth
    | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
    // 对比时间差
    NSDateComponents *dateCom = [calendar components:unit fromDate:startTime toDate:endTime options:0];
    NSString *time = [NSString stringWithFormat:@"%ld%ld%ld%ld%ld%ld",dateCom.year,dateCom.month,dateCom.day,dateCom.hour,dateCom.minute,dateCom.second];
    NSLog(@"time---->%@",time);
    
    return [time integerValue];
}


至于返回日期数据的,我从其他文章看到的,这里也粘出来,希望尽快解决你的问题

1.返回的数据为 Tue May 31 18:20:45 +0800 2011

   NSString *string = @"Tue May 31 18:20:45 +0800 2011";

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

    fmt.dateFormat = @"EEE MMM dd HH:mm:ss ZZZZ yyyy";

    fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en-US"];

    NSDate *date = [fmt dateFromString:string];

2.返回的数据为 12/23/2015 12点08:03秒

    NSString *string = @"12/23/2015 12点08:03秒";

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"MM/dd/yyyy HH点mm:ss秒";

    NSDate *date = [fmt dateFromString:string];

3.返回的数据为 2015-12-26 12:08:03

    NSString *createdAt = @"2015-12-26 12:08:03";

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";

如何通过手机本地时间判断服务器返回时间是哪天
1.如何判断今年很简单,只需要将本地时间和返回数据转为yyyy格式就可以判断

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy";

    NSString *nowYear = [fmt stringFromDate:[NSDate date]];
    NSString *selfYear = [fmt stringFromDate:服务器的时间];

    return [nowYear isEqualToString:selfYear];


2.如何判断昨天,将格式转为yyyyMMdd,然后将时间字符串转为NSDate类型来比较

NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyyMMdd";

    NSString *nowString = [fmt stringFromDate:[NSDate date]]; 
    NSString *selfString = [fmt stringFromDate:服务器时间]; 

    NSDate *nowDate = [fmt dateFromString:nowString];
    NSDate *selfDate = [fmt dateFromString:selfString];

    NSCalendar *calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
    NSDateComponents *cmps = [calendar components:unit fromDate:selfDate toDate:nowDate options:0];

    return cmps.year == 0
    && cmps.month == 0
    && cmps.day == 1;

3.判断今天和判断昨天差不多

NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyyMMdd";

    NSString *nowString = [fmt stringFromDate:[NSDate date]]; 
    NSString *selfString = [fmt stringFromDate:服务器时间];

    return [nowString isEqualToString:selfString];

相关文章

网友评论

      本文标题:时间戳转换

      本文链接:https://www.haomeiwen.com/subject/wrfvdxtx.html