gpt4 book ai didi

iphone - 在 iOS 上查找当前日期之前的星期一

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:27:04 26 4
gpt4 key购买 nike

我有一种情况需要某个日期之前的星期一(这里的某个日期是 localtournament.entryDeadline)。我尝试了下面的方法,但它给了我相同的日期。我发现了一些类似的问题,但没有一个可以在 iOS 上做到这一点。看起来应该很容易,我其实很喜欢 Cocoa 日期框架,但我暂时对此感到难过。

我做错了什么?结果(应该始终是星期一但不是)在 localTournament.entryOpen 中。

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [calendar components:(NSYearCalendarUnit | NSWeekdayCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:localTournament.entryDeadline]; //1=sunday, 2=monday, etc

if(comps.weekday > 2) {
//later in same week
[comps setWeekday:2];
[comps setHour:12];
localTournament.entryOpen = [calendar dateFromComponents:comps];
} else if(comps.weekday == 1) {
//sunday, go back a week
[comps setWeek:-1];
[comps setWeekday:2];
[comps setHour:12];
localTournament.entryOpen = [calendar dateByAddingComponents:comps toDate:localTournament.entryDeadline options:0];

} else {
//already monday, use previous week
[comps setWeek:-1];
[comps setHour:12];
localTournament.entryOpen = [calendar dateByAddingComponents:comps toDate:localTournament.entryDeadline options:0];
}

[calendar release];

最佳答案

如果您同时指定了 NSWeekdayCalendarUnitNSDayCalendarUnit 组件,NSCalendar 方法将比工作日更喜欢日信息(未更新)信息(是)。我要么完全删除 NSDayCalendarUnit 并用 NSWeekCalendarUnit 替换它,要么更新日期而不是工作日。

请参阅 dateFromComponents: 的文档获取更多信息。

关于iphone - 在 iOS 上查找当前日期之前的星期一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4882108/

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