【问题标题】:How to compare two given times with current time? [duplicate]如何将两个给定时间与当前时间进行比较? [复制]
【发布时间】:2014-05-12 03:50:23
【问题描述】:

我想将当前时间与不同日期的两个不同时间进行比较。我的代码是

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);

我的日志是 2000-01-01 09:12:00 +0000,2000-01-01 12:30:00 +0000

但我现在的时间是 2014-04-01 17:06:18。

我从

获取当前日期
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]); 

我想将当前时间与 record.trigger_from_time 和 record.trigger_to_time 进行比较

【问题讨论】:

  • 我不确定您的问题与您发布的代码有什么关系
  • 什么是record.trigger_from_time?什么是record.trigger_to_time?
  • 我想将 date1 和 date2 时间作为当前日期的时间。我可以进行比较,但日期显示为 2000-01-01 没有得到当前日期。
  • 您能否分享获取当前日期的代码,因为 record.trigger_from_time 不是当前日期,除非您在其他地方设置这看起来像来自对象的东西
  • record.trigger_from_time 和 record.trigger_to_time 是来自 Json Api.record.trigger_from_time="18:00:00" 和 record.trigger_to_time="06:07:00" 的时间字符串

标签: ios iphone objective-c ios7


【解决方案1】:

比较 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");

    }

更新: 通过开关

       ...
        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;
         }

【讨论】:

  • 当然,只需要进行一次比较,然后将结果保存在临时文件中或使用switch
  • @HotLicks 当然,更好
  • 当我将当前时间与两个给定时间进行比较时失败(日期格式为:HH:mm)。它显示日期相同。
【解决方案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");
}

【讨论】:

  • 我希望这个答案对你的问题是正确的......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 2015-02-24
  • 1970-01-01
相关资源
最近更新 更多