iOS开发——比较两个日期相差多少天(月、年)

需求

根据两个日期(NSDate),算出它们相差多少天。

解决方法

NSCalendar类提供了计算差值的接口,可以计算两个日期相差多少年月日时分秒等

代码

    //创建两个日期
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    NSDate *startDate = [dateFormatter dateFromString:@"2017-07-26"];
    NSDate *endDate = [dateFormatter dateFromString:@"2017-09-01"];

    //利用NSCalendar比较日期的差异
    NSCalendar *calendar = [NSCalendar currentCalendar];
    /**
     * 要比较的时间单位,常用如下,可以同时传:
     *    NSCalendarUnitDay : 天
     *    NSCalendarUnitYear : 年
     *    NSCalendarUnitMonth : 月
     *    NSCalendarUnitHour : 时
     *    NSCalendarUnitMinute : 分
     *    NSCalendarUnitSecond : 秒
     */
    NSCalendarUnit unit = NSCalendarUnitDay;//只比较天数差异
    //比较的结果是NSDateComponents类对象
    NSDateComponents *delta = [calendar components:unit fromDate:startDate toDate:endDate options:0];
    //打印
    NSLog(@"%@",delta);
    //获取其中的"天"
    NSLog(@"%ld",delta.day);

打印结果


结果

注意事项

1、如果同时比较月、天的时候,结果是N个月零N天,不会再是37天,例如

    NSCalendarUnit unit1 = NSCalendarUnitDay | NSCalendarUnitMonth;//同时比较天数、月份差异
    //比较的结果是NSDateComponents类对象
    NSDateComponents *delta1 = [calendar components:unit1 fromDate:startDate toDate:endDate options:0];
    //打印
    NSLog(@"%@",delta1);

打印结果


072602.png

即1个月零6天。

2、在遇到2月,闰年等不标准时期,这种方式的运算结果非常准确。

你可能感兴趣的:(iOS开发——比较两个日期相差多少天(月、年))