时间都去哪了?
最近一个项目涉及到时间的问题,尤其是当前时间和获得的时间戳的转化,发送当前的时间戳给服务器。界面展示的时候呢,展示的是分钟和秒。这样就各种计算求解天、小时、分钟、秒了,虽说简单,但是真正的写一下还是要方便许多,所以我封装了一个小方法,分享下:【个人使用,如有更优化的方法,还望不吝赐教】话不多说上代码:
-(NSString * )timeDifference:(NSString *)timeStamp { // 将时间戳转换成字符串 NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:[timeStamp intValue]]; NSTimeZone * zone = [NSTimeZone systemTimeZone]; NSInteger interval =[zone secondsFromGMTForDate:confromTimesp]; NSDate *date1 = [confromTimesp dateByAddingTimeInterval:interval]; NSDate * dateNow = [self getCurrentTime]; NSLog(@"时间戳对应的%@",date1); NSLog(@"当前时间对应的%@",dateNow); NSTimeInterval time=[dateNow timeIntervalSinceDate:date1]; int days=((int)time)/(3600*24); int hours=((int)time)%(3600*24)/3600; int minute=((int)time)%(3600*24)/60-hours*60; int second = (int)time - minute*60 - hours*3600 -days*24*3600; NSString *dateContent=[[NSString alloc] initWithFormat:@"%i天%i小时%i分钟%i秒",days,hours,minute,second]; // NSString * differenceTime = [NSString stringWithFormat:@"%i分%i秒",minute,second]; NSLog(@"日期之间的时间差:%@",dateContent); return dateContent; }
另一种方法就比较简单了,因为时间戳就是显示的秒数,所以只要用时间戳直接进行做差处理,然后在计算一下处理后的时间戳就是相差的时间
#pragma mark ------- 方法2直接进行时间戳的计算 -(NSString * )timeDiffient:(NSString *)timestamp{ NSDate * sendate = [NSDate date]; NSString * date2 = [NSString stringWithFormat:@"%ld",(long)[sendate timeIntervalSince1970]]; NSLog(@"当前的时间戳为:%@",date2); float diffientValue = [date2 floatValue] - [timestamp floatValue]; int days=((int)diffientValue)/(3600*24); int hours=((int)diffientValue)%(3600*24)/3600; int minute=((int)diffientValue)%(3600*24)/60-hours*60; int second = (int)diffientValue - minute*60 - hours*3600 -days*24*3600; NSString * s = [NSString stringWithFormat:@"%i天%i小时%i分%i秒",days,hours,minute,second]; return s; }
这个方法是获取一个时间戳,将这个时间戳和当前时间作差,获得时间间隔,返回值就比较随意了,我是把所有的都返回了,根据需要进行删减吧。发送当前时间戳也很简单,直接一句代码:
NSDate * sendate = [NSDate date]; NSString * date2 = [NSString stringWithFormat:@"%ld",(long)[sendate timeIntervalSince1970]]; NSLog(@"当前的时间戳为:%@",date2);