How to compare two given times with current time? [duplicate]

爱⌒轻易说出口 提交于 2020-01-07 09:31:49

问题


I want to compare current time with two different times on different dates.MY code is

NSString *time1 = record.trigger_from_time;
NSString *time2 = record.trigger_to_time;

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

NSDate *date1= [formatter dateFromString:time1];
NSDate *date2 = [formatter dateFromString:time2];

NSLog(@"%@,%@",date1,date2);

I'm getting log as 2000-01-01 09:12:00 +0000,2000-01-01 12:30:00 +0000

But MY current time is 2014-04-01 17:06:18.

I'm getting current date from

NSDate *now = [NSDate date]; 
NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init]; 
timeFormatter.dateFormat = @"HH:mm"; 
[timeFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
NSLog(@"The Current Time is %@",[timeFormatter stringFromDate:now]); 

I want to compare thie current time with record.trigger_from_time and record.trigger_to_time


回答1:


Comparing 2 NSDates.

    ...
    NSDate *date1= [formatter dateFromString:time1];
    NSDate *date2 = [formatter dateFromString:time2];

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

    } else if ([date2 compare:date1] == NSOrderedAscending) {
        NSLog(@"date1 is earlier than date2");

    } else {
        NSLog(@"dates are the same");

    }

UPD: via Switch

       ...
        NSDate *date1= [formatter dateFromString:time1];
        NSDate *date2 = [formatter dateFromString:time2];

        NSComparisonResult result = [date2 compare:date1];
        switch(result){
            case NSOrderedDescending:
                NSLog(@"date1 is later than date2");
                break;
            case NSOrderedAscending:
                NSLog(@"date1 is earlier than date2");
                break;
            default:
                NSLog(@"dates are the same");
                break;
         }



回答2:


NSString *time1 = @"09:10:02";
NSString *time2 = @"17:10:16";

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

NSDate *date1= [formatter dateFromString:time1];
NSDate *date2 = [formatter dateFromString:time2];

NSComparisonResult result = [date1 compare:date2];
if(result == NSOrderedDescending)
{
     NSLog(@"time1 is later than time2"); 
}
else if(result == NSOrderedAscending)
{
     NSLog(@"time2 is later than time1"); 
}
else
{
     NSLog(@"time1 is equal to time2");
}


来源:https://stackoverflow.com/questions/22784748/how-to-compare-two-given-times-with-current-time

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!