2014-08-29 45 views
-1

下面是代碼:如何比較NSDate的兩次。在進行比較時返回ndate。 #調試我的代碼

// get current date/time 
    NSDate *today = [NSDate date]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    // display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings 
    [dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; 
    [dateFormatter setDateFormat:@"HH:mm:ss"]; 
    NSString *currentTime = [dateFormatter stringFromDate:today]; 
    currentTime = [currentTime stringByReplacingOccurrencesOfString:@"AM" withString:@""]; 
    currentTime = [currentTime stringByReplacingOccurrencesOfString:@"PM" withString:@""]; 
    currentTime = [currentTime stringByReplacingOccurrencesOfString:@" " withString:@""]; 

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setTimeStyle:NSDateFormatterMediumStyle]; 
    [formatter setDateFormat:@"HH:mm:ss"]; 

    NSDate *date1= [formatter dateFromString:currentTime]; 
    NSDate *date2 = [formatter dateFromString:@"5:00:00"]; 


    NSComparisonResult result = [date1 compare:date2]; 
    if(result == NSOrderedDescending) 
    { 
     NSLog(@"date1 is later than date2"); 
    } 

在這裏,當我運行的代碼我收到日期1和date2作爲零,而我得到正確的當前時間以24小時格式。我從[NSDate日期]獲取當前時間的同時應用了相同的日期格式。我在這裏錯過了什麼?

編輯1:修正了錯字並改變了標題。

編輯2:根據建議,只比較小時,我可以使用:

NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDateComponents *components = [calendar components:(NSHourCalendarUnit) fromDate:date1]; 

    NSInteger hour = [components hour]; 

編輯3:改變了標題,以匹配具體要求。

但我無法從當前時間檢索date1。它拋出一個垃圾值。

+0

你爲什麼安定g風格以及格式?事實上,你究竟想在這裏做什麼?它僅僅是一個NSDate和日期格式化程序的實驗,還是你想做一些類似「獲取今天秒數」的內容? – 2014-08-29 15:32:41

+0

其實我想比較兩次,並檢查當前時間是否過去5:00 AM。 – 2014-08-29 15:36:20

+0

只應用dateFormat本身也給了我date1和date2爲零。 – 2014-08-29 15:37:58

回答

1

有一個錯字:
[dateFormatter setDateFormat:@"HH:mm:ss"];
應該是:
[formatter setDateFormat:@"HH:mm:ss"];

若要比較兩個日期使用:

NSDate *date1 = [NSDate date]; 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"HH:mm:ss"]; 
NSDate *date2 = [formatter dateFromString:@"05:00:00"]; 

NSComparisonResult result = [date1 compare:date2]; 
if(result == NSOrderedDescending) 
{ 
    NSLog(@"date1 is later than date2"); 
} 

如果你只是想比較小時:

NSCalendar *calendar = [NSCalendar currentCalendar]; 

NSDate *date1 = [NSDate date]; 
NSDateComponents *date1Components = [calendar components:NSCalendarUnitHour fromDate:date1]; 
NSInteger date1Hour = date1Components.hour; 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"HH:mm:ss"]; 
NSDate *date2 = [formatter dateFromString:@"05:00:00"]; 
NSDateComponents *date2Components = [calendar components:NSCalendarUnitHour fromDate:date2]; 
NSInteger date2Hour = date2Components.hour; 

if(date1Hour > date2Hour) { 
    NSLog(@"date1 is later than date2"); 
} 
+0

Bamn!我的錯。好。糾正錯字後,我在date1和date2中都得到垃圾值。 date1 = 2000-01-01 15:49:48 +0000和date2 = 1999-12-31 23:30:00 +0000,所以我猜有一些問題,至少date2應該是#somedate#05:00: 00 +0000。應該是什麼問題? – 2014-08-29 15:43:27

+0

我編輯了這個問題。你可以看看。 – 2014-08-29 15:45:52

+0

我必須得到5 AM字符串值的相關日期。我沒有得到如何檢索? – 2014-08-29 15:53:02