下面是设置:
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];有没有更好的办法?而不必转到日期,然后返回到组件。我一直在寻找一种更好的方法,但没有成功,也许我在寻找错误的术语。
发布于 2012-02-29 04:57:35
所提供的将给定偏移量添加到给定日期的方法是使用NSCalendar的dateByAddingComponents:toDate:options:。因此,您可以这样做:
NSDateComponents *daysToAdd = [[[NSDateComponents alloc] init] autorelease];
daysToAdd.day = 23;
NSDate *derivedData =
[CURRENTC dateByAddingComponents:daysToAdd
toDate:sourceDate
options:NSWrapCalendarComponents];隐含的假设是,您通常将事物存储为NSDate,NSDateComponents是允许您相对于给定的NSCalendar操作它们的帮助器。
所以在你的情况下,我不认为你能做得比你现在做的更好,因为你正在使用苹果认为的助手作为实际的存储。
https://stackoverflow.com/questions/9489268
复制相似问题