2012-01-05 86 views

回答

86

試試這個:

if ([someDate timeIntervalSinceNow] < 0.0) { 
    // Date has passed 
} 
+13

我把成一個類中的方法,所以你可以使用'someDate.isInPast'。 – 2012-01-05 20:28:57

+0

你的代碼只比較日期而不是時間。就像我在比較同一天,但不同的時間是這樣的:1/1/2015 5:00:00和1/1/2015 7:00:00與這個日期它顯示我日期已過。 – Daddy 2015-08-24 10:36:20

+1

+爸爸,不知道你的意思。根據文檔,此方法應該是完美的:「日期對象與當前日期和時間之間的時間間隔(只讀)如果日期對象早於當前日期和時間,則此屬性的值爲負值。」 – 2016-06-08 07:05:06

3

您可以使用

[NSDate date]; 

來獲取表示當前時間和日期一個NSDate對象。

然後比較,爲你約會的分析,例如:

if ([currentDate timeIntervalSince1970] > [yourDate timeIntervalSince1970]) { 
// yourDate is in the past 
} 

,你可以用它來任意兩個日期進行比較。希望這可以幫助。

+1

或做內聯:([[ NSDate date] timeIntervalSince1970]> [yourDate timeIntervalSince1970]) – 2012-01-05 16:36:18

+0

我只是提供了一個更一般的解決方案來比較日期 - 比較日期到現在是一個相當有利的情況。實際上,你可能會在這個特定的場景中使用timeIntervalSinceNow。 – 2012-01-05 17:17:07

6

您需要使用NSDate比較,這裏的許多答案將幫助您。

iOS: Compare two dates

邏輯將需要調整,但這應該設置你在正確的方向:

- (BOOL)date:(NSDate*)date isBefore:(BOOL)before otherDate:(NSDate*)otherDate ; 
{ 
    if(before && ([date compare:otherDate] == NSOrderedAscending)) 
     return YES; 
    if (!before && ([date compare:otherDate] == NSOrderedDescending)) 
     return YES; 
} 

用法:

if([self date:yourDate isBefore:YES otherDate:[NSDate date]]) 
+4

在編碼風格的筆記上:你的第二個參數應該被命名爲'isBefore:'。大聲朗讀「日期:X isBefore:YES/NO otherDate:Y」聽起來比IMO更好。「date:X is:YES/NO otherDate:Y」。 – Taum 2014-12-16 16:03:09

相關問題