【发布时间】:2011-04-19 20:17:36
【问题描述】:
if (datStartDate > datEndDate) {
这似乎不起作用。我知道有isEqual等,但是如何执行“大于”呢?
NSDate 都有。
【问题讨论】:
标签: objective-c nsdate
if (datStartDate > datEndDate) {
这似乎不起作用。我知道有isEqual等,但是如何执行“大于”呢?
NSDate 都有。
【问题讨论】:
标签: objective-c nsdate
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
}
}
如果你想拥有一个isAfter 扩展,它只需要返回true 以获得orderedDescending。
【讨论】:
已接受答案的 Swift 2 版本:
if firstDate.timeIntervalSinceDate(secondDate) > 0 {
// firstDate is greater (further in the future) than secondDate
}
【讨论】:
怎么样……
if ([datStartDate earlierDate: datEndDate] == datStartDate) {
// datStartDate is earlier
} else {
// datEndDate is earlier
}
【讨论】:
我知道的最简单的方法是:
if( [firstDate timeIntervalSinceDate:secondDate] > 0 ) {
其他答案包括比较:,想要添加一些味道;)。
【讨论】:
正如你所拥有的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 ) {
...
}
【讨论】:
要比较日期,请使用-compare: 方法:
返回值如果:
- 接收者和另一个日期是 完全相等, NSOrderedSame
- 接收器稍后在 时间比另一个日期, NSOrderedDescending
- 接收器是 时间早于另一个日期, NSOrderedAscending。
【讨论】: