您的位置:首页 > 其它

计算某个日期和当前时间的天数差

2013-04-10 17:19 281 查看
我的某个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 标示将来的某一天。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: