使用 NSDateComponents 获取一周的第一天:更改年份
你好 我在设置firstWeekDay时遇到问题,这就是我所做的:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit) fromDate:targetDate];
[comp setWeekday:2];
NSDate *firstWeekDay = [gregorian dateFromComponents:comp];
如果2011年1月1日星期六是targetDate,我日历中的firstWeekDay似乎是2011年12月26日星期一,但实际上应该是2010年12月12日星期一-26。我怎样才能做对呢?
Hello
I have a problem with setting a firstWeekDay, here is what I do:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit) fromDate:targetDate];
[comp setWeekday:2];
NSDate *firstWeekDay = [gregorian dateFromComponents:comp];
If Saturday 2011-01-01 is targetDate, the firstWeekDay in my calendar appears to be Monday 2011-12-26, but in fact it should be Monday 2010-12-26. How can I make it right?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
要解决此问题,请在 NSDateComponents 中添加 NSYearForWeekOfYearCalendarUnit。
前任:
To fix this problem, Add NSYearForWeekOfYearCalendarUnit in the NSDateComponents.
Ex:
尝试此
方法 请注意,此解决方案假设一周的第一天是星期一。
Try this
Note this solution assumes the first day of the week is Monday.
下面还涵盖了边缘情况,
Below also covers the edge case,
Swift 解决方案(感谢@YvesJusot):
The Swift solution (thanks @YvesJusot):
您应该使用动态值而不是像星期一那样硬编码 2!
You suppose to use dynamic values instead of hardcoding 2 as Monday!
我对@JasonGarrett 的答案做了一些更改,它对我有用。
I did some changes in @JasonGarrett answer and it works for me.