2012-02-17 22 views
0

我有NSDate对象的两个实例,它们表示一个电影文件的开始时间和结束时间。认为他们是简单的算法格式化NSDate的2个实例

NSDate *startDate = [formatter dateFromString:startDateString]; 
    NSDate *endDate = [formatter dateFromString:endDateString]; 

所以现在我需要从他们形成一个NSArray将每个元素在他们的时间差一个小时。说得简单,我举个例子,已开始日期

2012/02/16T22:00

和结束日期

2012/02/17T03:30

现在我需要的是以下对象的数组:

2012/02/16 T 22:00 
2012/02/16 T 23:00 
2012/02/17 T 00:00 
2012/02/17 T 01:00 
2012/02/17 T 02:00 
2012/02/17 T 03:00 

我该如何做到这一点?

+0

你的输入日期是字符串像** 2012/02/16T22:00 **或实际的NSDate对象? – sch 2012-02-17 17:46:08

+0

输入是具有定义的timeZone的两个实际NSDate对象。作为字符串或日期的输出类型不重要,因为它们很容易转换。 – Eugene 2012-02-17 17:48:03

+0

我不知道我是否完全明白...不能只使用NSMutableArray和addObject方法。每个NSDate之间的时间总是一小时?如果是这样,为什么不只设置一次startTime并创建一个循环,在最后一个NSdate上增加1小时并添加到数组中?或者你为什么不简单地创建一个你需要的所有信息并将其添加到数组中的类? – 2012-02-17 17:48:07

回答

4

以下代码将为您提供一小时增量的日期数组。

NSMutableArray *dates = [NSMutableArray array]; 
NSDate *date = startDate; 
while ([date compare:endDate] == NSOrderedAscending) { 
    [dates addObject:date]; 
    date = [NSDate dateWithTimeInterval:3600 sinceDate:date]; 
}