IOS計算某個日期和當前時間的天數差

jopen 9年前發布 | 1K 次閱讀 Objective-C iPhone

我的某個IOS項目中,需要分組來顯示簽到記錄, 每天可能有多次簽到, 用天來對簽到記錄進行分組。

每一條簽到記錄都有一個時間字段,分組的標題就是用時間中的日期來顯示的,例如:如果時間為 2013-1-25 01:01:01 那么分組的標題就為 2013-1-25。如果今天是2013-1-25,直接顯示2013-1-25是不是覺得體驗不好?“今天”反而覺得一目了然,呵呵。

于是我寫了一個函數計算某個時間和當前時間的天數差.

我把這個函數收入在一個工具類中,便于以后直接使用。如果你用的著,你也可以放到項目中使用。

我調用這個函數,判斷返回值:

如果 result=0, 表示今天

如果 result=-1, 表示昨天

如果 result<-1 標示昨天以前

如果 result>0 標示將來的某一天。

+ (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;

}</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!