这里是设置:
NSDateComponents* temporalComponents;
temporalComponents = [theDateComponents copy]; //another component set to todays date.
[temporalComponents setDay: [temporalComponents day] + (offset * 7)]
如果我输出组件的结果,则表明正确添加了天数,例如21天。
"<NSDateComponents: 0x6a48820>\n Calendar Year: 2012\n Month: 2\n Day: 49\n Hour: 13\n Minute: 12"
但当然我希望它有这个更正的“包装”组件列表,其中月份增加并且日期被更正..(主要是因为我做了进一步的操作,我可以替换整个组件,而不是仅仅添加到在其他方面,我的最终产品是NSDateComponent,因此可以进一步操作。
"<NSDateComponents: 0x6a48820>\n Calendar Year: 2012\n Month: 3\n Day: 20\n Hour: 13\n Minute: 12"
现在我这样做是为了正确地包裹日子(以及其他任何需要包裹的东西)
NSDate* tempDate = [CURRENTC dateFromComponents:temporalComponents];
temporalComponents2 = [CURRENTC components:unitFlags fromDate:tempDate];
[theDatesArray addObject: temporalComponents2];
有没有更好的方法?无需去约会,回到组件。我找到了一个没有成功的更好的方法,也许我正在用错误的术语进行搜索。
答案 0 :(得分:0)
用于将给定偏移量添加到给定日期的方法是使用NSCalendar
的{{3}}。所以你会做这样的事情:
NSDateComponents *daysToAdd = [[[NSDateComponents alloc] init] autorelease];
daysToAdd.day = 23;
NSDate *derivedData =
[CURRENTC dateByAddingComponents:daysToAdd
toDate:sourceDate
options:NSWrapCalendarComponents];
隐含的假设是你通常将事物存储为NSDate
,而NSDateComponents
是帮助者,允许你相对于给定的NSCalendar
操纵它们。
所以在你的情况下,我认为你没有比你做的更好,因为你正在使用Apple认为帮助者作为实际存储的东西。