我需要每个“季度”重复一次活动(我认为这意味着大约提前 3 个月)。所以我可以预期这会移动日期(但事实并非如此):
NSDateComponents *component = [[NSDateComponents alloc] init]; // quarter
component.quarter = 1;
self.todoStartDate = [[NSCalendar currentCalendar] dateByAddingComponents: component toDate:self.todoStartDate options: 0];
在日期中添加“季度”有什么问题吗?添加一天或一周时效果很好,但添加“季度”时则不然。
(我希望我可以将其添加为 applefreak 答案的格式化评论,这是一个非常好的答案。但是 SO 不允许在评论中进行标记。)
Apple 的 NSCalendar 文档 http://developer.apple.com/library/IOs/#documentation/Cocoa/Reference/Foundation/Classes/NSCalendar_Class/Reference/NSCalendar.html says:
此 API 代表的某些日历可能必须映射其基本日历
单位概念转化为年/月/周/日/……命名法。例如,一个
日历由一年中的 4 个季度而不是 12 个月组成
代表季度的月份单位。
现在,这可能更清楚了,但我think苹果的意思是,普通日历根本没有“季度”;他们只有年、月(共 12 个)和日。但你可以子类化NSCalendar
(或者创建一个新实例NSCalendar
?)这样一年只有 4 个月,然后将这些月份称为“季度”,并且为了此类子类的利益,Apple 预先定义了quarter
财产。这实在是太令人困惑了;我敢打赌,苹果 WTFery 背后一定有一个好故事。
不管怎样,我同意 applefreak 的观点,无论如何你应该处理年/月/日日期,而不是胡乱处理神话般的“季度”。毕竟,那又怎样呢?mean假设第三季度比第一季度短,那么“添加”到 3 月 31 日还有两个季度? (答案是否取决于今年是否是闰年?)
如果你真正想要的是“每年 1 月 1 日、4 月 1 日、7 月 1 日和 10 月 1 日重复发生的事件”,那么你应该写that。甚至不必费心“增加三个月”,这与“增加四分之一”有同样的问题。
顺便说一句,这里的其他人已经注意到quarter
WTF也是如此。例如:我想在 NSDateComponents 类中获得四分之一的值 https://stackoverflow.com/questions/11618784/i-want-to-get-a-quarter-value-in-nsdatecomponents-class
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)