我的某個IOS項目中,需要分組來顯示簽到記錄, 每天可能有多次簽到, 用天來對簽到記錄進行分組。
每一條簽到記錄都有一個時間字段,分組的標題就是用時間中的日期來顯示的,例如:
如果時間為 2013-1-25 01:01:01 那么分組的標題就為 2013-1-25。如果今天是2013-1-25,直接
顯示2013-1-25是不是覺得體驗不好?“今天”反而覺得一目了然,呵呵。
於是我寫了一個函數計算某個時間和當前時間的天數差.
代碼如下:
+ (NSInteger)numberOfDaysFromTodayByTime:(NSString *)time timeStringFormat:(NSString *)format { // format可以形如: @"yyyy-MM-dd" NSDate *today = [NSDate date]; NSTimeZone *localTimeZone = [NSTimeZone systemTimeZone]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setTimeZone:localTimeZone]; [formatter setDateFormat:NSLocalizedString(format,nil)]; // 時分秒轉為00:00:00 NSDate *today2 = [formatter dateFromString:[formatter stringFromDate:today]]; NSDate *newDate = [formatter dateFromString:time]; // 時分秒轉為00:00:00 NSDate *newDate2 = [formatter dateFromString:[formatter stringFromDate:newDate]]; double dToday = [G2XToolkits numberOfSecondsFrom1970:today2]; double dNewDate = [G2XToolkits numberOfSecondsFrom1970:newDate2]; NSInteger nSecs = (NSInteger)(dNewDate - dToday); NSInteger oneDaySecs = 24*3600; return nSecs / oneDaySecs; }
我把這個函數收入在一個工具類中,便於以后直接使用。如果你用的着,你也可以放到項目中使用。
我調用這個函數,判斷返回值:
如果 result=0, 表示今天
如果 result=-1, 表示昨天
如果 result<-1 標示昨天以前
如果 result>0 標示將來的某一天。