作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用当前方法获取本周的第一天和最后一天:
NSDate *weekDate = [NSDate date];
NSCalendar *myCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *currentComps = [myCalendar components:( NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekOfYearCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:weekDate];
[currentComps setWeekday:1]; // 1: sunday
NSDate *firstDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:7]; // 7: saturday
NSDate *lastDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
这工作得很好,但现在在 ios 4.3 中就不起作用了。
知道问题出在哪里吗?
最佳答案
我已经在我的 OS X 10.6 分区上启动了 Xcode 4.1,并尝试根据 iOS 4.3 SDK 编译您的代码。结果发现 NSWeekOfYearCalendarUnit
是未定义的,因此一定是在以后的 iOS 版本中引入的。这也许可以解释为什么它不能在 iOS 4.3 上运行。
以下替代代码可以工作并给出正确的结果:
NSDate *now = [NSDate date];
NSCalendar *myCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *firstDayOfTheWeek;
NSTimeInterval length;
[myCalendar rangeOfUnit:NSWeekCalendarUnit
startDate:&firstDayOfTheWeek
interval:&length
forDate:now];
NSDate *lastDayOfTheWeek = [firstDayOfTheWeek dateByAddingTimeInterval:length];
更新:上面的代码给出了一周的第一天(开始)和下一周的(开始)。如果您添加 (length - 1)
而不是 length
那么您将获得一周最后一天的结束时间(感谢@rmaddy!)。或者,您可以在第一天的基础上添加 6 天:
NSDate *now = [NSDate date];
NSDate *firstDayOfTheWeek;
NSCalendar *myCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[myCalendar rangeOfUnit:NSWeekCalendarUnit
startDate:&firstDayOfTheWeek
interval:NULL
forDate:now];
NSDateComponents *sixDays = [[NSDateComponents alloc] init];
[sixDays setDay:6];
NSDate *lastDayOfTheWeek = [myCalendar dateByAddingComponents:sixDays toDate:firstDayOfTheWeek options:0];
备注:此代码还根据区域设置正确处理“一周的开始”。
关于ios - NSD 本周日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16739938/
在一列中有日期,如何创建包含 ISO week date 的列? ISO 周日期由年、周数和星期组成。 year 与使用 year 获得的年份不同功能。 周数 是比较简单的部分 - 它可以使用 wee
在一列中有日期,如何创建包含 ISO week date 的列? ISO 周日期由年、周数和星期组成。 year 与使用 year 获得的年份不同功能。 周数 是比较简单的部分 - 它可以使用 wee
我是一名优秀的程序员,十分优秀!