【问题标题】:How to check if date (from date picker) is between two other dates ? objective-c如何检查日期(来自日期选择器)是否在其他两个日期之间?目标-c
【发布时间】:2012-03-21 15:10:14
【问题描述】:

我正在尝试从 UIDatePicker(MM-dd 格式)获取日期并检查它是否在其他两个日期的范围内;

我已经尝试过很多不同的方法,我认为我的想法已经走得太远了:) 有人可以帮我做到尽可能简单吗?

这是我最后一次尝试代码:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM-dd"];
NSString *theDate = [dateFormat stringFromDate:birthdateSelector.date];
NSDate *birthdate = [dateFormat dateFromString:theDate];

NSString *Capricorn_Start = @"12-22" ;
NSString *Capricorn_End = @"01-19" ;

if ([birthdate laterDate:[dateFormat dateFromString:Capricorn_End]] && [birthdate earlierDate:[dateFormat dateFromString:Capricorn_Start]]){

    NSLog(@"im capricorn");
}

谢谢, 阿米尔。

【问题讨论】:

标签: iphone objective-c nsdateformatter uidatepicker


【解决方案1】:

方法laterDateearlierDate 返回一个NSDate

您应该改用compare: 并检查返回值。

【讨论】:

    【解决方案2】:

    如果你有 dateAdateBdateC,并且你想检查 dateA dateB dateC,你可以得到 dateA-dateBdateB-dateC 之间的区别,这会给你 diffXdiffY。如果 diffX 符号等于 diffY 符号,则表示 dateBAC 之间.

    或者,换句话说,您的代码如下所示:

    NSTimeInterval diffX = [dateB timeIntervalSinceDate:dateA];
    NSTimeInterval diffY = [dateC timeIntervalSinceDate:dateB];
    
    if (signbit(diffX) == signbit(diffY))
    {
        // dateB is in-between dateA and dateC
    }
    

    【讨论】:

      【解决方案3】:

      您可以添加一年(两者相同),然后例如从 1970 年获取时间,然后进行比较。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-23
        • 2022-07-21
        • 2017-07-07
        • 1970-01-01
        • 2013-04-11
        相关资源
        最近更新 更多