最近呢沫换,比較忙都沒寫新的文章类浪。(其實(shí)是懶哈哈)
好的直接進(jìn)入主題载城。閑聊私我、(害羞臉)
最近做一個(gè)節(jié)目的項(xiàng)目费就,然后節(jié)目回顧列表需要顯示是多少天前的時(shí)間诉瓦,然后遇到以下的問題。
首先需求描述:
節(jié)目1--20170817 20:55:00
今天是20170818 17:55:00
顯示 --------------------- 一天前
我一開始用的是以下的方法:
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setFirstWeekday:2];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *fromDate = [dateFormatter dateFromString:model.begintime];//@"2017-08-17 20:55:00"
NSDate *toDate = [NSDate date];//獲取當(dāng)前時(shí)間
NSDateComponents *dayComponents = [gregorian components:NSDayCalendarUnit fromDate:fromDate toDate:toDate options:0];
return dayComponents.day;
// dayComponents.day 即為間隔的天數(shù)
然后會(huì)發(fā)現(xiàn)會(huì)有一個(gè)小問題力细。就是:
它這個(gè)是按24小時(shí)計(jì)算睬澡,不滿24小時(shí)不算一天。
就是 我20170817 20:55:00 到 20170818 18:00:00不算滿24小時(shí)眠蚂,不算一天猴贰。我在APP上顯示的是今天而不是1天前,可明明就是昨天的節(jié)目嘛河狐。所有會(huì)有點(diǎn)現(xiàn)問題米绕。
不過沒關(guān)系,我把兩個(gè)對(duì)比的的時(shí)間的時(shí)分秒設(shè)置為00:00:00馋艺,那么問題就解決了栅干。
解決方法
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
[gregorian setFirstWeekday:2];
NSDate *fromDate;
NSDate *toDate;
[gregorian rangeOfUnit:NSCalendarUnitDay startDate:&fromDate interval:NULL forDate:[dateFormatter dateFromString:model.begintime]];//節(jié)目的開始時(shí)間
[gregorian rangeOfUnit:NSCalendarUnitDay startDate:&toDate interval:NULL forDate:[dateFormatter dateFromString:self.currenttime]];//當(dāng)前時(shí)間
NSDateComponents *dayComponents = [gregorian components:NSCalendarUnitDay fromDate:fromDate toDate:toDate options:0];
NSString *daysago = [NSString stringWithFormat:@"%ld",(long)[dayComponents day]];
// daysago
// dayComponents day 即為間隔的天數(shù)
然后就歐了。問題就解決了捐祠。好了碱鳞,寫完下班,開始小周末踱蛀。哈哈