【发布时间】:2014-05-15 15:44:59
【问题描述】:
我正在尝试获取当前季度的第一个和最后一个日期,我正在使用它:
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitQuarter | NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]];
components.quarter = 1;
funStartDate = [[NSCalendar currentCalendar] dateFromComponents: components];
NSLog(@"First day of quater: %@", funStartDate);
[components setQuarter:[components quarter]+1];
funEndDate = [[NSCalendar currentCalendar] dateFromComponents: components];
NSLog(@"Last day of quater: %@", [funEndDate descriptionWithLocale:[NSLocale currentLocale]]);
但是在两个控制台打印中我都看到了今天的日期。我做错了什么?
【问题讨论】:
-
由于您的组件中有日、月和年,因此季度被认为是多余的(并且不一致)并被忽略。 (我只会在月份中添加 3 ——当然,在年底“换行”。)(或者,可能更好,使用 dateByAddingCompoonents。)
-
记录
quarter的值。这个功能还有效吗?不,它不是:stackoverflow.com/questions/11618784/… 所以放弃让你的代码以这种方式工作的所有希望。 -
其实,@HotLicks,没有必要“包装”年份。将 3 添加到月份组件将正常工作。日期组件是(是)进行日历算术的正确方法。
-
我已经更新了我的答案。如果对您有帮助,请告诉我。
标签: ios nsdate nscalendar