首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSDateComponents包装

NSDateComponents包装
EN

Stack Overflow用户
提问于 2012-02-29 04:32:54
回答 1查看 1K关注 0票数 0

下面是设置:

代码语言:javascript
复制
NSDateComponents* temporalComponents;

temporalComponents = [theDateComponents copy];  //another component set to todays date.

[temporalComponents setDay:   [temporalComponents day] + (offset * 7)]

如果我输出组件的结果,它显示正确添加了天数,例如21天。

代码语言:javascript
复制
"<NSDateComponents: 0x6a48820>\n    Calendar Year: 2012\n    Month: 2\n    Day: 49\n    Hour: 13\n    Minute: 12"

但我当然希望它有这个经过修正的“包装”组件列表,其中月是递增的,日是经过修正的。(主要是因为我做了进一步的操作,我可能会替换整个组件,而不仅仅是添加到组件中)换句话说,我的最终产品是一个NSDateComponent,因此可以进一步操作它。

代码语言:javascript
复制
"<NSDateComponents: 0x6a48820>\n    Calendar Year: 2012\n    Month: 3\n    Day: 20\n    Hour: 13\n    Minute: 12"

现在我这样做是为了正确地包装日子(以及其他需要包装的东西)。

代码语言:javascript
复制
NSDate* tempDate = [CURRENTC dateFromComponents:temporalComponents];

temporalComponents2 = [CURRENTC components:unitFlags fromDate:tempDate];

[theDatesArray addObject: temporalComponents2];

有没有更好的办法?而不必转到日期,然后返回到组件。我一直在寻找一种更好的方法,但没有成功,也许我在寻找错误的术语。

EN

回答 1

Stack Overflow用户

发布于 2012-02-29 04:57:35

所提供的将给定偏移量添加到给定日期的方法是使用NSCalendardateByAddingComponents:toDate:options:。因此,您可以这样做:

代码语言:javascript
复制
NSDateComponents *daysToAdd = [[[NSDateComponents alloc] init] autorelease];
daysToAdd.day = 23;

NSDate *derivedData =
      [CURRENTC dateByAddingComponents:daysToAdd
                toDate:sourceDate
                options:NSWrapCalendarComponents];

隐含的假设是,您通常将事物存储为NSDateNSDateComponents是允许您相对于给定的NSCalendar操作它们的帮助器。

所以在你的情况下,我不认为你能做得比你现在做的更好,因为你正在使用苹果认为的助手作为实际的存储。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9489268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档