• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - 如何检查限制的日期和时间是否与另一个限制重叠?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 03:13:53 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想检查日期限制*(例如:- 22/07/2013 2:30PM -22/07/2013 8:30PM )* 是否有另一个时间限制*< em>(例如:- 22/07/2013 4:30PM -22/07/2013 6:30PM)* 与否。我对这个概念完全陌生。谁能告诉我如何做到这一点。

我们将不胜感激任何帮助

下面是我试过的代码:

- (void)viewDidLoad
{
    [self isDateInterval"8/1/2013 8:30am" and"8/1/2013 8:40am" fallsWithin"8/1/2013 8:30am" and"8/1/2013 8:55am"];
    [super viewDidLoad];
}

-(BOOL)isDateIntervalNSString*)startDate1 andNSString*)endDate1 fallsWithinNSString*)startDate2 andNSString*)endDate2
{
    BOOL isWithinrange;

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

    [formatter setDateFormat"dd/MM/yyyy hh:mmaa"];

    NSTimeInterval ti1 = [[formatter dateFromString:startDate1] timeIntervalSince1970];
    NSTimeInterval ti2 = [[formatter dateFromString:endDate1] timeIntervalSince1970];

    NSTimeInterval ti3 = [[formatter dateFromString:startDate2] timeIntervalSince1970];
    NSTimeInterval ti4 = [[formatter dateFromString:endDate2] timeIntervalSince1970];

    if( (ti3 > ti1 && ti3 < ti2) || (ti3 < ti1 && ti4 > ti1) )
    {
        //Date with in range
        isWithinrange=TRUE;
    }
    else
    {
        isWithinrange=FALSE;
        //Not with in range
    }

    return isWithinrange;
}

我希望输出为“isWithin”,因为一个时间间隔的一部分正在进入另一个时间间隔



Best Answer-推荐答案


此代码将为您提供所需的内容。它检查两个间隔的开始日期或结束日期是否在另一个间隔的开始日期和结束日期之间。

- (BOOL)timeIntervalFromDateNSString *)dateString toDateNSString *)anotherDateString overlapsWithTimeIntervalFromDateNSString *)date2String toDateNSString *)anotherDate2String {
    BOOL isWithinRange = NO;

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"dd/MM/yyyy hh:mmaa";

    NSDate *date = [formatter dateFromString:dateString];
    NSDate *anotherDate = [formatter dateFromString:anotherDateString];
    NSDate *date2 = [formatter dateFromString:date2String];
    NSDate *anotherDate2 = [formatter dateFromString:anotherDate2String];

    NSDate *startDate = [date earlierDate:anotherDate];
    NSDate *endDate = [date laterDate:anotherDate];

    NSDate *otherStartDate = [date2 earlierDate:anotherDate2];
    NSDate *otherEndDate = [date2 laterDate:anotherDate2];

    BOOL startDateIsEarlierThanOtherStartDate = [startDate earlierDatetherStartDate] == startDate;
    BOOL endDateIsLaterThanOtherStartDate = [endDate laterDatetherStartDate] == endDate;

    BOOL startDateIsEarlierThanOtherEndDate = [startDate earlierDatetherEndDate] == startDate;
    BOOL endDateIsLaterThanOtherEndDate = [endDate laterDatetherEndDate] == endDate;

    BOOL otherStartDateIsEarlierThanStartDate = [startDate earlierDatetherStartDate] == otherStartDate;
    BOOL otherEndDateIsLaterThanStartDate = [otherEndDate laterDate:startDate] == otherEndDate;

    BOOL otherEndDateIsEarlierThanStartDate = [startDate earlierDatetherEndDate] == otherEndDate;
    BOOL otherEndDateIsLaterThanEndDate = [endDate laterDatetherEndDate] == otherEndDate;

    isWithinRange = (startDateIsEarlierThanOtherStartDate && endDateIsLaterThanOtherStartDate) || (startDateIsEarlierThanOtherEndDate && endDateIsLaterThanOtherEndDate) || (otherStartDateIsEarlierThanStartDate && otherEndDateIsLaterThanStartDate) || (otherEndDateIsEarlierThanStartDate && otherEndDateIsLaterThanEndDate);

    return isWithinRange;
}

为了说明每种可能的情况,任何一对 bool 语句都必须为真。向方法提供日期对的顺序无关紧要。

关于iphone - 如何检查限制的日期和时间是否与另一个限制重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17899434/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap