如何在iPhone sdk中获取当前日期的下一个和更早的日期

如何在iPhone sdk中获取当前日期的下一个和更早的日期,iphone,Iphone,我有一个约会对象 NSDate*日期=[NSDate日期] 现在我想要一个早于这个日期和下一个日期的日期。我应该使用什么功能 早一天和晚一天是指前一天和后一天 我也尝试过使用earlierDate,但可能是我用错了,因为它返回相同的日期 tnx.NSDate有点用词不当。这不是一个简单的日期,而是一个时间一个日期,精度在亚秒级。earlierDate:方法是一个比较函数,它返回两个日期中较早的一个,而不创建较早的日期。如果您只关心当前日期之前的日期,您可以: NSDate *earlierDat

我有一个约会对象

NSDate*日期=[NSDate日期]

现在我想要一个早于这个日期和下一个日期的日期。我应该使用什么功能

早一天和晚一天是指前一天和后一天

我也尝试过使用earlierDate,但可能是我用错了,因为它返回相同的日期


tnx.

NSDate有点用词不当。这不是一个简单的日期,而是一个时间一个日期,精度在亚秒级。earlierDate:方法是一个比较函数,它返回两个日期中较早的一个,而不创建较早的日期。如果您只关心当前日期之前的日期,您可以:

NSDate *earlierDate = [date addTimeInterval:-1.0];
它将返回日期前1秒的日期。你也可以这样做

NSDate *laterDate = [date addTimeInterval:1.0];
在未来的1秒钟内约会

如果你想提前一天,你可以加上几天的秒数。当然,这是近似值,除非您处理所有的公历问题,但如果您只想快速获得近似值:

NSDate *earlierDate = [date addTimeInterval:(-1.0*24*60*60)];

这不适用于闰秒等,但对于大多数应用来说,它可能很好。

您需要使用NSCalendar和NSDateComponents来可靠地进行此计算

这里有一个例子,我必须亲自计算今天中午的NSDate。我相信您可以找到如何从本文档和文档中获得所需的结果

NSDate *today = [NSDate date];

NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];

NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
NSDateComponents* todayComponents = [gregorian components:unitFlags fromDate:today];

todayComponents.hour = 12;

NSDate* noonToday = [gregorian dateFromComponents:todayComponents];

你的问题没有明确说明。你想提前多少时间,晚多少时间?你想要前一天和后一天吗?是的,前一天和后一天。