比较 NSDates 以检查今天是不是介于两者之间

Posted

技术标签:

【中文标题】比较 NSDates 以检查今天是不是介于两者之间【英文标题】:Comparing NSDates to check if today falls in between比较 NSDates 以检查今天是否介于两者之间 【发布时间】:2011-05-09 02:57:07 【问题描述】:

感谢你们,我已成功地将我的字符串数组转换为 NSDates。现在我正在尝试检查今天的日期是否在我的两个日期之间(即 fromDate 和 toDate)。我已经看到以下问题,但未能在我的代码中实现它们。太好了,我可以有任何其他方法或帮助使用用户提供的解决方案。

NSDate between two given NSDates

How to Check if an NSDate occurs between two other NSDates

How can I check if an NSDate falls in between two other NSDates in an NSMutableArray

这是我目前拥有的:

NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"yyyy-MM-dd"];
NSTimeZone *tz = [NSTimeZone localTimeZone];
[format setTimeZone:tz];
NSDate *now = [[NSDate alloc] init];
NSString *todaysDate = [format stringFromDate:now];
NSLog(@"todaysDate: %@", todaysDate);

//converting string - date
int size = [appDelegate.ALLevents count];
for (NSUInteger i = 0; i < size; i++) 
    Event *aEvent = [appDelegate.ALLevents objectAtIndex:i];

    //Convert fromDate
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd-MM-yyyy"];
    NSDate *fromDate = [dateFormatter dateFromString:aEvent.fromDate];
    [dateFormatter setTimeZone:tz];
    NSLog(@"fromDate: %@", fromDate);

    //Convert toDate
    NSDate *toDate = [dateFormatter dateFromString:aEvent.toDate];
    NSLog(@"toDate: %@", toDate);
    [dateFormatter release];
    //Compare if today falls in between
            //codes here
    

【问题讨论】:

不确定我知道问题是什么? 检查 'todaysDate' 是否介于 'fromDate' 和 'toDate' 之间 【参考方案1】:

执行以下操作,

NSTimeInterval fromTime = [fromDate timeIntervalSinceReferenceDate];
NSTimeInterval toTime = [toDate timeIntervalSinceReferenceDate];
NSTimeInterval currTime = [[NSDate date] timeIntervalSinceReferenceDate];

NSTimeInterval 基本上是一种双精度类型,因此您可以比较 currTime 是否大于一个且小于另一个,而不是日期介于这两个 NSDate 之间。

【讨论】:

以上是关于比较 NSDates 以检查今天是不是介于两者之间的主要内容,如果未能解决你的问题,请参考以下文章

字符、符号或数字前后的空格;但是,不是介于两者之间

使用本周和周末在 2 个 NSDates 之间签到

如何检查今天是不是在 Twig 的两个日期之间?

在插入 SQLite 之前检查表 B 中的日期是不是介于表 A 中的日期之间

Laravel 查询生成器介于两者之间

无论日期如何,检查给定时间是不是介于两次之间