Iphone 如何根据当前日期获取下一个15天的日期?

Iphone 如何根据当前日期获取下一个15天的日期?,iphone,ios,objective-c,Iphone,Ios,Objective C,目前,我可以使用以下代码获取iPhone的当前日期 NSDate* date = [NSDate date]; NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd"]; NSString* currentDateStr = [formatter stringFromDate:date]; NSLog(@"User's current Date:%@",

目前,我可以使用以下代码获取iPhone的当前日期

NSDate* date = [NSDate date];
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSString* currentDateStr = [formatter stringFromDate:date];
NSLog(@"User's current Date:%@",currentDateStr);
但我想从当前日期开始获得下一个15天的日期,我如何才能获得该日期?

试试这个:

NSCalendar* calendar = [[[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar] autorelease];
NSDateComponents* components = [[[NSDateComponents alloc] init] autorelease];
components.day = 15;
NSDate* newDate = [calendar dateByAddingComponents: components toDate: self.date options: 0];
也许有更好的方法(我正在关注这个问题,看看是否有),但这就是我目前使用的方法:

+ (NSDate *)offsetFromDate:(NSDate *)fromDate withDays:(int)days 
{
    NSTimeInterval timeInterval = (days * 86400);
    NSDate *date = [[NSDate alloc] initWithTimeInterval:timeInterval sinceDate:fromDate];    
    return date;
}
如果你用谷歌搜索一天中的秒数,你将得到86400的值。

试试这个:

NSTimeInterval totalOffset = /*time to add - in seconds */
NSDate *today = [NSDate date];
NSDate *endWithTZ = [today dateByAddingTimeInterval:totalOffset];

这是最简单的解决方案。请注意,世界上许多地区都有“夏令时”,因此有些日子多或少有一个小时。例如,当可以增加或减少一个小时时,夏令时就失败了。在15天之前,一个小时可以忽略不计。没什么大不了的。这是完成一项任务的最快方式。@Burhanuddinsnuelwala一小时可能是两天之间的差异,特别是当原始日期的时间成分接近午夜时。这不是正确的解决方案,简单性的问题是有争议的。这是一个非常幼稚的解决方案,在大多数情况下有效,但在其他一些情况下失败得很厉害。请注意,世界上许多地区都有“夏令时”,因此有些日子有一个小时左右。确实如此。date components方法是正确的方法,你说得对。我投票赞成杜德的答案,并改变了我的答案。在这里学习新东西总是很棒的请注意,世界上许多地区都有“夏令时”,因此以秒为单位的一天时间不是恒定的。
  NSLog(@"%@", [date dateByAddingTimeInterval:15*24*60*60]);
NSDate *todayDate = [NSDate date];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setDay:+15];
NSDate *afterfifteenDays = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:todayDate options:0];
NSLog(@"todayDate: %@", todayDate);
NSLog(@"afterfifteenDays: %@", afterfifteenDays);