如何在两个 NSDateComponents 之间获取 NSDateComponents?
Posted
技术标签:
【中文标题】如何在两个 NSDateComponents 之间获取 NSDateComponents?【英文标题】:How to get NSDateComponents between two NSDateComponents? 【发布时间】:2014-01-18 14:00:06 【问题描述】:我有两个NSDateComponents
,我想要这两个之间的所有NSDateComponents
,我尝试了以下方法,
NSDateComponents *first = ...;
NSDateComponents *second = ...;
BOOL boolDone = NO;
while (!boolDone)
[array addObject:first];
first.day+=1;
NSLog(@"%@",first);
if([[first date] compare:[second date]] == NSOrderedSame)
boolDone = YES;
NSLog(@"All dates : %@",array);
循环之后,它只打印我在 first NSDateComponent
...的日期!怎么了?
这里有一个日志可以理解
2014-01-18 19:47:16.413 testCalendar[4274:a0b]
Calendar Year: 2014
Month: 1
Leap month: no
Day: 19
2014-01-18 19:47:16.415 testCalendar[4274:a0b]
Calendar Year: 2014
Month: 1
Leap month: no
Day: 20
2014-01-18 19:47:16.416 testCalendar[4274:a0b]
Calendar Year: 2014
Month: 1
Leap month: no
Day: 21
2014-01-18 19:47:16.416 testCalendar[4274:a0b]
Calendar Year: 2014
Month: 1
Leap month: no
Day: 22
2014-01-18 19:47:16.417 testCalendar[4274:a0b]
Calendar Year: 2014
Month: 1
Leap month: no
Day: 23
2014-01-18 19:47:16.418 testCalendar[4274:a0b]
23-1-2014
23-1-2014
23-1-2014
23-1-2014
23-1-2014
【问题讨论】:
【参考方案1】:您总是将相同的元素添加到数组中。该数组只是将 pointers 指向它的
元素,因此在循环结束时,它包含 n 个指向相同元素的指针
对象first
。改变
[array addObject:first];
到
[array addObject:[first copy]];
应该能解决问题。
【讨论】:
以上是关于如何在两个 NSDateComponents 之间获取 NSDateComponents?的主要内容,如果未能解决你的问题,请参考以下文章
NSDateFormatter 和 NSDateComponents 的输出 NSDate 之间的区别
如何在 Swift 中将 NSDateComponents 转换为 DateComponents