时间差的计算:
计算过去时间与当前时间的时间差
注意:其中的NSDateFormatter时间格式化类初始化非常消耗性能,如果多次使用,建议定义为全局。
NSString *timeStr = @"2016-10-18 8:22:24";
//创建时间格式化类
NSDateFormatter *dataFormatter =[[NSDateFormatter alloc] init];
//设置时间格式化样式
dataFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
//把时间字符串转化为date
NSDate *timeDate = [dataFormatter dateFromString:timeStr];
//把时间转化为时间戳
NSTimeInterval lateTime = [timeDate timeIntervalSince1970];
//获取当前时间戳
NSDate *currentDate = [NSDate date];
NSTimeInterval currentTime = [currentDate timeIntervalSince1970];
//获取时间差
NSTimeInterval cha = currentTime - lateTime;
//获取相差的秒数
int sen = (int) cha % 60;
//获取相差的分钟数
int min = (int) cha / 60 % 60;
//获取相差的小时数
int house = (int) cha / 60 /60;
//获取相差时间的字符串
NSString *differTime = [NSString stringWithFormat:@"%02d:%02d:%02d",house,min,sen];
NSLog(@"%@",differTime);
NSDate与NSCalendar:
NSDate是独立与任何历法的,它只是时间相对于某个时间点的时间差;NSDate是进行日历计算的基础
获取年、月、日、小时,分钟、秒、星期、季度、这个月的第几个星期、这一年的第几个星期
//定义一个遵循某历法的日历对象
NSCalendar *gcCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
//获取某个时间点NSDateComponents表示,并设置需要表示哪些
NSDateComponents *dateComponents = [gcCalendar components:kCFCalendarUnitYear |
kCFCalendarUnitMonth |
kCFCalendarUnitDay |
kCFCalendarUnitHour |
kCFCalendarUnitMinute |
kCFCalendarUnitSecond |
kCFCalendarUnitWeekday |
kCFCalendarUnitWeekdayOrdinal |
kCFCalendarUnitQuarter |
kCFCalendarUnitWeekOfMonth |
kCFCalendarUnitWeekOfYear |
kCFCalendarUnitYearForWeekOfYear fromDate:[NSDate date]];
//依次是年、月、日、小时,分钟、秒、星期、季度、这个月的第几个星期、这一年的第几个星期
NSLog(@"%ld",(long)dateComponents.year);
NSLog(@"%ld",(long)dateComponents.month);
NSLog(@"%ld",(long)dateComponents.day);
NSLog(@"%ld",(long)dateComponents.hour);
NSLog(@"%ld",(long)dateComponents.minute);
NSLog(@"%ld",(long)dateComponents.second);
//从星期日开始计算,星期日为1
NSLog(@"%ld",(long)dateComponents.weekday);
NSLog(@"%ld",(long)dateComponents.quarter);
NSLog(@"%ld",(long)dateComponents.weekOfMonth);
NSLog(@"%ld",(long)dateComponents.weekOfYear);