知道某个日期是在同一周(或年份或月份)中的最佳方式是什么,最好是使用扩展,并且只使用
Swift?
举个例子,在Objective-C中我有
- (BOOL)isSameWeekAs:(NSDate *)date { NSDateComponents *otherDay = [[NSCalendar currentCalendar] components:NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:self]; NSDateComponents *today = [[NSCalendar currentCalendar] components:NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; return ([today weekOfYear] == [otherDay weekOfYear] && [today year] == [otherDay year] && [today era] == [otherDay era]); }
请不要向NSDate提出解决日期的解决方案
解决方法
您可以使用日历方法isDate(equalTo:granularity :)来检查它如下:
extension Date { func isInSameWeek(date: Date) -> Bool { return Calendar.current.isDate(self,equalTo: date,toGranularity: .weekOfYear) } func isInSameMonth(date: Date) -> Bool { return Calendar.current.isDate(self,toGranularity: .month) } func isInSameYear(date: Date) -> Bool { return Calendar.current.isDate(self,toGranularity: .year) } func isInSameDay(date: Date) -> Bool { return Calendar.current.isDate(self,toGranularity: .day) } var isInThisWeek: Bool { return isInSameWeek(date: Date()) } var isInToday: Bool { return Calendar.current.isDateInToday(self) } var isInTheFuture: Bool { return Date() < self } var isInThePast: Bool { return self < Date() } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。