OC语言day08-14日历NSCalendar

2016-07-31  本文已影响140人  liyuhong165

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 开头)

上一篇 下一篇

猜你喜欢

热点阅读