簡體   English   中英

使用nsdate比較兩個日期

[英]Comparing two dates with nsdate

在我的應用程序中,我必須比較兩次:當前(這是12:44)並且考慮到我嘗試過:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh:mm"];
NSDate *neededDate = [[NSDate alloc] init];
neededDate = [dateFormatter dateFromString:@"14:45"];
if ([neededDate compare:[NSDate date]] == NSOrderedAscending) {
NSLog(@"yes");
} else NSLog(@"no");
[neededDate release];
[dateFormatter release];

但是每當我啟動它時,NSLog就會說“不”。 請,建議我錯了。 先感謝您。

因為您的neededDate將等於"1970/01/01 14:45"

您需要設置正確的年份和日期。

例如,您可以使用下一種方法獲取當前年份和月份:

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]];
NSLog(@"Current year: %d", components.year);
NSLog(@"Current month: %d", components.month);
NSLog(@"Current day: %d", components.day);

我認為問題在於:

[dateFormatter setDateFormat:@"hh:mm"];

應該:

[dateFormatter setDateFormat:@"HH:mm"];

因為現在為“14:45”它返回(null)日期

(這是以前的答案:)

這意味着在您的情況下,requiredDate總是高於當前日期。 這可能是因為您以24小時格式存儲了48小時的字符串。 將字符串更改為HH:mm

另外,驗證您在requiredDate中存儲的值。

這是一個小例子

NSDate *neededDate = [[NSDate date] dateByAddingTimeInterval:5];
    if ([neededDate compare:[NSDate date]] == NSOrderedAscending) {
        NSLog(@"asc");
    } else {
        NSLog(@"dec");
    }

在這種情況下,將打印dec。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM