2009-12-31 66 views
7

我有興趣創建一種方法來查找當前日期是否在特定日期的特定時間之間。這是一個調度計劃,所以我想知道當前發生了什麼事件。每天都有相同的時間:820-900,900-940,940-1020等。由於這必須在任何一天完成,我不知道如何創建一個特定時間的NSDate。我認爲這可能與NSTimeInterval完成,但我不知道如何實例化。NSDate在兩個給定的NSDates之間

回答

26

這是不完美的,但你可以使用[NSDate的比較:]檢查你的約會對陣雙方邊界:

NSDate *firstDate = ... 
NSDate *secondDate = ... 

NSDate *myDate = [NSDate date]; 

switch ([myDate compare:firstDate]) { 
    case NSOrderedAscending: 
     NSLog(@"myDate is older"); 
     // do something 
     break; 
    case NSOrderedSame: 
     NSLog(@"myDate is the same as firstDate"); 
     // do something 
     break; 
    case NSOrderedDescending: 
     NSLog(@"myDate is more recent"); 
     // do something 
     break; 
} 

switch ([myDate compare:secondDate]) { 
    case NSOrderedAscending: 
     NSLog(@"myDate is older"); 
     // do something 
     break; 
    case NSOrderedSame: 
     NSLog(@"myDate is the same as secondDate"); 
     // do something 
     break; 
    case NSOrderedDescending: 
     NSLog(@"myDate is more recent"); 
     // do something 
     break; 
} 

或者更簡單:

BOOL between = NO; 

if (([myDate compare:firstDate] == NSOrderedDescending) && 
    ([myDate compare:secondDate] == NSOrderedAscending)) { 

    between = YES; 
} 

我敢肯定有一個更好的方法來做複雜的日期比較,但這應該工作。

4

看看 - [NSCalendar組件:fromDate:]。它可以讓你將一個日期分解成不同的組件,然後你可以在這個例子中查看小時和分鐘。

11

最簡單的方法是使用-timeIntervalSinceReferenceDate將每個日期轉換爲NSTimeInterval類型的值,該值僅爲double

NSTimeInterval rightNow = [[NSDate date] timeIntervalSinceReferenceDate]; 

從那裏,確定日期是否在任何給定的兩個日期之間只是簡單的數字比較的問題。

如果您需要將日期的字符串表示形式轉換爲NSDate實例,然後檢索時間間隔,請使用NSDateFormatter

如果您需要從已知日期組件創建日期,請使用NSCalendar。 (即您知道年份是2010年,月份是4,日期是12,您可以使用NSCalendar的組件通過-dateFromComponents:方法生成NSDate實例)。

由於本表示,NSCalendar的組件接口,也可用於蘇斯出小時&分鐘,以確定它是否是在一個範圍內(這似乎是在事件不會每天都在發生非典型用法同時......但是......當然......也有這樣的理由!)

+0

沒有例子。 :(:( – bluefloyd8 2013-11-25 14:18:07