美文网首页
iOS 计算两个日期的间隔

iOS 计算两个日期的间隔

作者: SKCongroo | 来源:发表于2017-07-27 13:54 被阅读1158次

    计算两个日期的间隔

    + (NSString *)numberOfDaysWithFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate {
        // 创建一个标准国际时间的日历
        NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
        // 可根据需要自己设置时区.
        calendar.timeZone = myTimeZone;
        // 获取两个日期的间隔
        NSDateComponents *comp = [calendar components:NSCalendarUnitDay|NSCalendarUnitHour fromDate:fromDate toDate:toDate options:NSCalendarWrapComponents];
        NSInteger hour = (comp.hour - comp.day * 24);
        return [NSString stringWithFormat:@"%ld天%ld小时", comp.day, hour];
    }
    

    上文中 NSDateComponents 初始化方法中的 components 属性是一个枚举, 还可以获取更多 NSDate 的信息, 配置见下表.

    typedef NS_OPTIONS(NSUInteger, NSCalendarUnit) {
            NSCalendarUnitEra                = kCFCalendarUnitEra,
            NSCalendarUnitYear               = kCFCalendarUnitYear,
            NSCalendarUnitMonth              = kCFCalendarUnitMonth,
            NSCalendarUnitDay                = kCFCalendarUnitDay,
            NSCalendarUnitHour               = kCFCalendarUnitHour,
            NSCalendarUnitMinute             = kCFCalendarUnitMinute,
            NSCalendarUnitSecond             = kCFCalendarUnitSecond,
            NSCalendarUnitWeekday            = kCFCalendarUnitWeekday,
            NSCalendarUnitWeekdayOrdinal     = kCFCalendarUnitWeekdayOrdinal,
            NSCalendarUnitQuarter            NS_ENUM_AVAILABLE(10_6, 4_0) = kCFCalendarUnitQuarter,
            NSCalendarUnitWeekOfMonth        NS_ENUM_AVAILABLE(10_7, 5_0) = kCFCalendarUnitWeekOfMonth,
            NSCalendarUnitWeekOfYear         NS_ENUM_AVAILABLE(10_7, 5_0) = kCFCalendarUnitWeekOfYear,
            NSCalendarUnitYearForWeekOfYear  NS_ENUM_AVAILABLE(10_7, 5_0) = kCFCalendarUnitYearForWeekOfYear,
            NSCalendarUnitNanosecond         NS_ENUM_AVAILABLE(10_7, 5_0) = (1 << 15),
            NSCalendarUnitCalendar           NS_ENUM_AVAILABLE(10_7, 4_0) = (1 << 20),
            NSCalendarUnitTimeZone           NS_ENUM_AVAILABLE(10_7, 4_0) = (1 << 21),
    };
    

    相关文章

      网友评论

          本文标题:iOS 计算两个日期的间隔

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