iPhone:如何在两个选定日期之间找到日期?

时间:2011-10-22 10:54:24

标签: iphone objective-c cocoa-touch ios4 nsdate

在我的应用中,我有两个约会。

例如,

  

第1日:2011年10月28日

     

第二次约会:2011年11月2日

现在我想要在这两个选定日期之间的所有日期。

应该是,

  

2011-10-28

     

29-10-2011

     

30-10-2011

     

2011年1月11日

     

2011年2月11日

如何使用NSDate获取此信息?

4 个答案:

答案 0 :(得分:6)

尝试dateWithTimeInterval:SinceDate:

NSMutableArray dates = [NSMutableArray array];
NSDate *curDate = startDate;
while([curDate timeIntervalSince1970] <= [endDate timeIntervalSince1970]) //you can also use the earlier-method
{
    [dates addObject:curDate];
    curDate = [MSDate dateWithTimeInterval:86400 sinceDate:curDate]; 86400 = 60*60*24
}
//here maybe an additional check if the enddate has to be inserted or not

答案 1 :(得分:3)

NSDateComponentsdateByAddingComponents:toDate:options:,这是我使用的,它的效果非常好。一定要注意闰年的岁月。

更新:我会使用托马斯的例子。它的效果比我的好,而且阅读起来容易得多。

答案 2 :(得分:0)

您可以使用NSDateFormatter将字符串转换为NSDate对象,然后使用NSDate的ealierDate:和laterDate:方法来比较它们。

答案 3 :(得分:0)

NSDate *today = [NSDate date];
NSDate *startDate = [NSDate date];
NSDate  *endDate = [today addTimeInterval:10.0*60.0*60.0*24.0]; // end date 10 days ahead
while (YES) {

    startDate= [startDate addTimeInterval:1.0*60.0*60.0*24.0];
    NSLog(@"%@   --  %@",endDate,startDate);

    if([startDate compare:endDate]==NSOrderedDescending) break;
}