我已将此类别添加到NSDate:
- (bool)isWeekend
{
NSString* s = [self asString:@"e"];
if ([s isEqual:@"6"])
return YES;
else if ([s isEqual:@"7"])
return YES;
else
return NO;
}
Run Code Online (Sandbox Code Playgroud)
辅助功能:
- (NSString*)asString:(NSString*)format
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:format];
NSString *formattedDateString = [dateFormatter stringFromDate:self];
[dateFormatter release];
return formattedDateString;
}
Run Code Online (Sandbox Code Playgroud)
isWeekend如果是星期六或星期日,应该返回YES.但如果当地的星期日有一个星期的开始,它就不起作用,在这种情况下,星期五将是第6天,星期六将是第7天.
我怎么解决这个问题?
Dav*_*ong 23
你想使用NSCalendar和NSDateComponents:
NSDate *aDate = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSRange weekdayRange = [calendar maximumRangeOfUnit:NSWeekdayCalendarUnit];
NSDateComponents *components = [calendar components:NSWeekdayCalendarUnit fromDate:aDate];
NSUInteger weekdayOfDate = [components weekday];
if (weekdayOfDate == weekdayRange.location || weekdayOfDate == weekdayRange.length) {
//the date falls somewhere on the first or last days of the week
NSLog(@"weekend!");
}
Run Code Online (Sandbox Code Playgroud)
这是假设一周的第一天和最后一天包含"周末"(对于公历是正确的.在其他日历中可能不是这样).
在Swift 3+中:
extension Date {
var isWeekend: Bool {
return NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)!.isDateInWeekend(self)
}
}
Run Code Online (Sandbox Code Playgroud)
在Swift中:
func isWeekend(date: NSDate) -> Bool {
let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
return calendar.isDateInWeekend(date)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5909 次 |
| 最近记录: |