if (datStartDate > datEndDate) {
这似乎不起作用。我知道有一个isEqual
等方法,但如何执行“大于”比较?
有两个NSDate
。
if (datStartDate > datEndDate) {
这似乎不起作用。我知道有一个isEqual
等方法,但如何执行“大于”比较?
有两个NSDate
。
我所知道的最简单方法是:
if( [firstDate timeIntervalSinceDate:secondDate] > 0 ) {
其他答案已经讲解了compare:,我想再添加一些个人见解 ;)
要比较日期,请使用-compare:
方法:
返回值说明:
- 接收器和另一个日期完全相等,返回NSOrderedSame
- 接收器晚于另一个日期,返回NSOrderedDescending
- 接收器早于另一个日期,返回NSOrderedAscending
那么关于这个问题...
if ([datStartDate earlierDate: datEndDate] == datStartDate) {
// datStartDate is earlier
} else {
// datEndDate is earlier
}
如果你使用NSDates:
NSDate *datStartDate = [NSDate dateWithString:@"2010-10-01 03:00:00 +0900"];
NSDate *datEndDate = [NSDate dateWithString:@"2010-10-01 04:00:00 +0900"];
if ( ([datStartDate compare:datEndDate]) == NSOrderedDescending ) {
...
}
接受答案的 Swift 2 版本:
if firstDate.timeIntervalSinceDate(secondDate) > 0 {
// firstDate is greater (further in the future) than secondDate
}
if ([startDate compare:endDate] == NSOrderedAscending) {
NSLog(@"startDate is EARLIER than endDate");
}
我已经使用NSDate和NSComparison结果等相关内容工作多年,但是我永远也不能记住它的工作原理。因此,我在Date
上编写了一个方便的扩展来解决这个问题:
func isBefore(_ otherDate: Date) -> Bool {
let result = self.compare(otherDate)
switch result {
case .orderedAscending:
return true
case .orderedSame,
.orderedDescending:
return false
}
}