计算两个日期的间隔
+ (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),
};
网友评论