美文网首页
OC语言day08-14日历NSCalendar

OC语言day08-14日历NSCalendar

作者: liyuhong165 | 来源:发表于2016-07-31 22:42 被阅读140次

    pragma mark 日历NSCalendar

    pragma mark 概念

    /**
    日历NSCalendar
     
     1.利用日历类 从当前时间对象中获取 年月日时分秒 (单独获取出来) (components:fromDate:)
     - (返回一个NSDateComponents对象 通过这个对象获取对应的年月日、时分秒)
     components:想打印日期的那个值(枚举) 
     fromDate:打印的日期的date;
     参数说明
     NSCalendarUnit: 这个是日历中的一个枚举 包含了年月日 时分秒 等
     
     2. 比较两个时间 相差多少
     - (返回一个NSDateComponents对象 通过这个对象获取对应的年月日、时分秒)
     components:想打印日期的那个值(枚举) 
     fromDate:过去的时间date
     toDate:现在的时间date
     options:一般情况下都不需要 如果是一个枚举 是一个option 传一个0就行;
    
     */
    

    pragma mark 代码

    #import <Foundation/Foundation.h>
    #pragma mark 类
    
    #pragma mark main函数
    int main(int argc, const char * argv[])
    {
    #pragma 日历NSCalendar
    
    #warning 1.日历类 NSCalendar
        // 获取当前时间
        NSDate *now = [NSDate date];
        NSLog(@"now = %@",now);
        // 创建日历
        NSCalendar *calendar = [NSCalendar currentCalendar];
        
    #pragma 2. 利用日历类 从当前时间对象中获取 年月日时分秒 (单独获取出来) (components:fromDate:)
        /**
         components:(NSCalendarUnit 是一个枚举) 参数的含义是, 问你需要获取什么, 年?月?日
         枚举可以写多个
         
         */
        // 一般情况下 如果一个方法接受一个参数 ,这个参数是一个枚举, 那么可以通过 |(或)符号,连接多个枚举值
        NSCalendarUnit type = NSCalendarUnitYear
                            | NSCalendarUnitMonth
                            | NSCalendarUnitDay
                            | NSCalendarUnitHour
                            | NSCalendarUnitMinute
                            | NSCalendarUnitSecond;
    #warning NSDateComponents
        NSDateComponents *cmps = [calendar components:type fromDate:now]; // 获取到的日历 存储到 NSDateComponents这个类的对象当中
        NSLog(@"year = %ld",cmps.year);
        NSLog(@"month = %ld",cmps.month);
        NSLog(@"day = %ld",cmps.day);
        NSLog(@"hour = %ld",cmps.hour);
        NSLog(@"minute = %ld",cmps.minute);
        NSLog(@"second = %ld",cmps.second);
    
        NSLog(@"--------------");
        
    #pragma 3.比较两个时间的差值, 比较相差 多少年 多少月 多少日 多少小时 多少分 多少秒
        // 3.1过去的一个时间
        NSString *str = @"2013-04-28 07:43:58 +0000";
        NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
        formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss Z";
        NSDate *oldDate = [formatter dateFromString:str];
        NSLog(@"oldDate = %@",oldDate);
        
        // 3.2 当前的时间
        NSDate *nowDate = [NSDate date];
        NSLog(@"nowDate = %@",nowDate);
    
        // 3.3 比较两个时间 (使用到 日历类)
    #warning 比较两个时间 (components:fromDate:toDate:options)
        /**
         options: 一般情况下都不需要 如果是一个枚举 是一个option 传一个0就行
         */
        NSCalendar *calendar1 = [NSCalendar currentCalendar];
        NSDateComponents *cmps1 = [calendar components:type fromDate:oldDate toDate:nowDate options:0];
        NSLog(@"相差 :%ld年%ld月%ld日%ld小时%ld分钟%ld秒钟",
              cmps1.year,
              cmps1.month,
              cmps1.day,
              cmps1.hour,
              cmps1.minute,
              cmps1.second
              );
        
        return 0;
    }
    
    // (单例)———— 无论获取千次百次 都是获取的是同一个 (都是以share 或者default 、current 开头)
    
    

    相关文章

      网友评论

          本文标题:OC语言day08-14日历NSCalendar

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