iOSiOS学习开发iOS程序猿

Ios中时间差的计算,NSData与NSCalendar(日历)

2016-10-18  本文已影响167人  小僧有礼了

时间差的计算:

计算过去时间与当前时间的时间差

注意:其中的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);
上一篇下一篇

猜你喜欢

热点阅读