如何比较两个日期和时间,EXP:07/10/2015 12:30到08/10/2015 02:00在ios?

时间:2015-10-07 10:07:42

标签: ios objective-c date time compare

 NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];

[timeFormatter setDateStyle:NSDateFormatterNoStyle];

[timeFormatter setTimeZone:[NSTimeZone localTimeZone]];

[timeFormatter setDateFormat:@"dd/MM/YYYY HH:mm"];

NSDate *startDate = [timeFormatter1 dateFromString:@"07/10/2015 12:30"];

NSDate *EndDate = [timeFormatter1 dateFromString:@"08/10/2015 02:30"];


if([startDate compare:EndDate] == NSOrderedAscending)

    return YES;

 else

    return NO;

我跟随上面的代码,但每次输出都是错误的结果(转到"返回No")。

同时EXP:07/10/2015 12:30至07/10/2015 23:30这是有效的。

我需要两种格式工作。

请帮帮我?

2 个答案:

答案 0 :(得分:0)

根据NSDate比较的Apple Documentation

返回NSComparisonResult值,该值指示接收方的时间顺序和另一个给定日期。

- (NSComparisonResult)compare:(NSDate *)anotherDate

参数anotherDate

比较接收器的日期。该值不得为零。如果值为nil,则行为未定义,并且可能在将来的Mac OS X版本中更改。

返回值

如果:

接收者和另一个日子完全相同,NSOrderedSame

接收者的时间晚于anotherDate,NSOrderedDescending

接收者的时间早于另一个日期,NSOrderedAscending 换句话说:

if ([date1 compare:date2] == NSOrderedSame) ...

请注意,在您的特定情况下,读取和写入它可能更容易:

if ([date2 isEqualToDate:date2]) ...

请参阅Apple Documentation about this one

答案 1 :(得分:0)

问题是年份格式。使用“yyyy”代替“YYYY”来解决问题。

这是工作代码:

NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];

    [timeFormatter setDateStyle:NSDateFormatterNoStyle];

    [timeFormatter setTimeZone:[NSTimeZone localTimeZone]];

    [timeFormatter setDateFormat:@"dd/MM/yyyy HH:mm"];

    NSDate *startDate = [timeFormatter dateFromString:@"07/10/2015 12:30"];

    NSDate *EndDate = [timeFormatter dateFromString:@"08/10/2015 02:30"];


    if([startDate compare:EndDate] == NSOrderedAscending)

        NSLog(@"Ascending");

    else

        NSLog(@"Descending");

http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns

检查此链接以获取更多日期格式