在我的應用程序中,我得到兩個日期。iPhone:如何查找兩個選定日期之間的日期?
例如,
1日期:2011-10-28
第2日期:2011年2月11日
現在,我想這兩個選定日期間的所有日期。
所以它應該是,
2011-10-28
29-10-2011
30-10-2011
2011年1月11日
2-11-2011
我怎樣才能使用NSDate得到這個?
在我的應用程序中,我得到兩個日期。iPhone:如何查找兩個選定日期之間的日期?
例如,
1日期:2011-10-28
第2日期:2011年2月11日
現在,我想這兩個選定日期間的所有日期。
所以它應該是,
2011-10-28
29-10-2011
30-10-2011
2011年1月11日
2-11-2011
我怎樣才能使用NSDate得到這個?
嘗試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
添加86400秒還能在夏令時發生的日子裏工作嗎?這樣的日子可能會長一小時或更短...... – dokaspar
您可以使用NSDateFormatter將字符串轉換爲NSDate對象,然後使用NSDate的ealierDate:和laterDate:方法來比較它們。
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;
}
看NSDateComponents
和dateByAddingComponents:toDate:options:
,這是我使用和它的作品相當不錯的。請務必留意閏年。
更新:我會用thomas的例子。它比我的效果更好,閱讀起來更容易。
但是他在時鐘變化方面不太可靠。 –
http://stackoverflow.com/questions/3357257/simplest-way-to-loop-between-two-nsdates-on-iphone –