后台返回的数据有的是时间戳,有的是返回日期数据,我这里是时间戳
时间戳转时间格式
// 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];
网友评论