if (datStartDate > datEndDate) {
这似乎不起作用。我知道有一个isEqual
等,但我怎么表现“大于”?
有NSDate
。
答案 0 :(得分:137)
我知道最简单的方法是:
if( [firstDate timeIntervalSinceDate:secondDate] > 0 ) {
其他答案涵盖比较:,想添加一些味道;)。
答案 1 :(得分:30)
要使用-compare:
方法比较日期:
返回值如果:
- 接收者和另一个日子 完全相同, NSOrderedSame
- 接收器稍晚 时间比另一个日期, NSOrderedDescending
- 接收器是 比其他日期早, 的 NSOrderedAscending 即可。
答案 2 :(得分:19)
怎么样......
if ([datStartDate earlierDate: datEndDate] == datStartDate) {
// datStartDate is earlier
} else {
// datEndDate is earlier
}
答案 3 :(得分:12)
正如你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 ) {
...
}
答案 4 :(得分:2)
接受答案的Swift 2版本:
if firstDate.timeIntervalSinceDate(secondDate) > 0 {
// firstDate is greater (further in the future) than secondDate
}
答案 5 :(得分:1)
if ([startDate compare:endDate] == NSOrderedAscending) {
NSLog(@"startDate is EARLIER than endDate");
}
答案 6 :(得分:0)
我多年来一直在使用NSDate和NSComparison结果,我永远不会忘记这一点。所以我在Date
上为它写了一个便利扩展:
func isBefore(_ otherDate: Date) -> Bool {
let result = self.compare(otherDate)
switch result {
case .orderedAscending:
return true
case .orderedSame,
.orderedDescending:
return false
}
}
如果您希望获得isAfter
分机,则只需返回true
orderedDescending
。