美文网首页iOSiOS学习开发iOS程序猿
Ios中时间差的计算,NSData与NSCalendar(日历)

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

作者: 小僧有礼了 | 来源:发表于2016-10-18 21:31 被阅读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);
    

    相关文章

      网友评论

        本文标题:Ios中时间差的计算,NSData与NSCalendar(日历)

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