gpt4 book ai didi

ios - NSD 本周日期

转载 作者:行者123 更新时间:2023-11-29 03:53:57 24 4
gpt4 key购买 nike

我使用当前方法获取本周的第一天和最后一天:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com