所以我试着获得这周的日期范围。
当我获得当前日期组件(仅年份和日期)时,这些是值:
我注意到附近有“Obsolescent”写道。尝试搜索苹果文档,但没有发现任何相关内容。
然后我尝试使用当前日历(或格里高利历,相同值)获取NSDate,但我得到的值是:
所以周被忽略了。所以我在我的组件中添加了几个月和一周的时间并且有这样的组件:
然后我试图从这里得到我的约会,这就是我得到的:
现在很明显,周组件在这里被忽略了。为什么会这样?它被弃用了吗?或者是一些错误?
答案 0 :(得分:2)
所以我最终找到了解决方案。
如果你只是设置工作日,它似乎都可以解决(开始工作):
[startDate setWeekday:1];
然后正确返回带星期的日期。
如果在没有设置工作日的情况下忽略周组件,不知道它是否仍然是一个错误。
答案 1 :(得分:1)
要计算一周的开始结束日期,rangeOfUnit:startDate:interval:forDate:
的{{1}}方法非常有用:
NSCalendar
要计算一周前的相同日期,请使用NSDate *now = [NSDate date];
NSDate *startOfWeek;
NSTimeInterval length;
[[NSCalendar currentCalendar] rangeOfUnit:NSWeekCalendarUnit
startDate:&startOfWeek
interval:&length
forDate:now];
NSDate *endOfWeek = [startOfWeek dateByAddingTimeInterval:length];
NSLog(@"%@", startOfWeek);
NSLog(@"%@", endOfWeek);
:
dateByAddingComponents
答案 2 :(得分:0)
即使我对我的问题没有答案,我也会发布我使用的这个问题的解决方案。
所以我花了几个星期的时间将它们乘以7.这给了我当前的结束日期。我知道这不好,因为几周可以设置不同的日期等等。但对于我最常见的默认问题(格里高利日历,每周7天),这个解决方案在已有的日期时间计算器中快速解决。
[components setDay:components.week * 7 - 7]; //Start of week
startDate = [[NSCalendar currentCalendar] dateFromComponents:components];
[components setDay:components.day + 7]; //End of week
endDate = [[NSCalendar currentCalendar] dateFromComponents:components];
[components setDay:0]; //I am using this not just here so i am setting back my changes