在应用中至少有两个日期,你想知道他们的关系,或者通过比较两个日期,用于显示个性化的日期格式,例如:微信的几天前,几小时前等。
对于简单的比较来说,可以使用内置的NSDate比较函数。如果想知道从某个日期到某个日期一共有多少天,需要有指向系统日历的引用和两个日期。
例如
NSDate * todayDate = [NSDate date];//今天的日期
判断某个日期是不是今天 if ( [todayDate isEqualToDate:someDay ] ) {
}//返回一个布尔值
判断某个日期是不是早于今天 if ( [todayDate laterDate:someDay] ){
}}//返回一个布尔值
判断某个日期是否晚于今天 if ( [todayDate earlierDate: someDay] ){
}}//返回一个布尔值
要想获得两个日期之间相差的秒数,请使用timeIntervalSinceDate:函数并将第二个日期作为参数传递过来。函数的返回值是一个双精度浮点数,就是两个日期相差的秒数。可以通过系统日历与NSDateComponents类获得关于日期比较的更详细信息,这会以你需要的格式返回两个日期相差的时间。因此,如果想要知道天数、小时数、分钟数、年数、月数或是其中的组合。
1、首先获得指向用户系统日期的引用:
NSCalendar * systemCalendar = [NSCalender currentCalendar];
2、通过对NSCalender常量进行按位或运算来指定采用的时间单位:
unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit ;
跟多可以使用的常量有:
NSEraCalendarUnit 指定纪元
NSYearCalendarUnit 指定年
NSMonthCalendarUnit 指定月
NSDayCalendarUnit 指定天
NSHourCalendarUnit 指定小时
NSMinuteCalendarUnit 指定分钟
NSSecondCalendarUnit 指定秒数
NSWeekCalenderUnit 指定周
NSWeekdayCalendarUnit 指定工作日
3、通过NSCalendar的comPonents:fromDate:toDate:options:函数来返回NSdateComponents对象,对象中的数据秒数了根据指定的NSCalender常量,计算得出两个日期的时间差。可以访问相应的属性获得所需的信息。
例如:NSDateComponents * dateComparison = [systemCalendar components:unitFlags fromDate:someDay toDate:todayDate options:NSWrapCalendarComponents];
dateComparion.year ,dateComparison.month, dateComparison.day 获得相应的间隔的年月日,同样,也可以获得时分秒。