最常見(jiàn)獲取N天前后的日期的方法是:
//獲取N天后日期+ (NSDate *)getDate:(NSDate *)currentDate day:(NSInteger)day { NSInteger days = day; // n天后的天數(shù) days = (days == 0 ? 2.f : days);//未指定天數(shù)則默認(rèn)為兩天 NSDate *appointDate; // 指定日期聲明 NSTimeInterval oneDay = 24 * 60 * 60; // 一天一共有多少秒 appointDate = [currentDate initWithTimeIntervalSinceNow: +(oneDay * days)]; return appointDate;}
而獲取N天前的日期
/改為負(fù)的天數(shù)即可 appointDate = [currentDate initWithTimeIntervalSinceNow:
大都是這樣的方法,該方法也確實(shí)能計(jì)算出距離《當(dāng)前》時(shí)間的N天前或N天后的時(shí)間;但是在最近使用時(shí),發(fā)現(xiàn)這樣計(jì)算卻無(wú)法算出《指定日期》的N天前/后時(shí)間,為此還試了很多次,卻都沒(méi)有計(jì)算出…
感覺(jué) initWithTimeIntervalSinceNow 方法始終是用《當(dāng)前》時(shí)間來(lái)計(jì)算N天前/后的時(shí)間;即使傳入一個(gè)《指定時(shí)間》也不會(huì)根據(jù)《指定時(shí)間》來(lái)計(jì)算;后來(lái)?yè)Q了一個(gè)方法才解決 (或許也不是不可能計(jì)算,也可能是因?yàn)閭魅肴掌诘臅r(shí)間格式有誤,而導(dǎo)致計(jì)算失敗) 因?yàn)榈R了不少時(shí)間,后面換了方法才解決,方法如下:
如果想獲取 指定日期的N天前或者N天后,可以使用下面方法:
+ (NSDate *)getDate:(NSDate *)currentDate day:(NSInteger)day { NSTimeInterval days = 24 * 60 * 60 * day; // 一天一共有多少秒 NSDate *appointDate = [currentDate dateByAddingTimeInterval:days]; return appointDate;}
上面是獲取 N 天的日期,要想獲取 N 天前將 days 前加負(fù)號(hào)即可
NSDate *appointDate = [currentDate dateByAddingTimeInterval: - days];