检查时间间隔是不是在今天
Posted
技术标签:
【中文标题】检查时间间隔是不是在今天【英文标题】:Check if time interval falls into the today检查时间间隔是否在今天 【发布时间】:2015-01-23 12:23:37 【问题描述】:我有一个包含事件和日历的核心数据,我需要构建一个谓词请求以仅获取今天的事件。例如:
事件(在核心数据表中,它是两个日期类型的属性)
1) Start 10/01/2015 14:00:00 Ends 10/01/2015 16:00:00
2) Start 10/01/2015 14:00:00 Ends 11/01/2015 19:00:00
3) Start 09/01/2015 12:00:00 Ends 12/01/2015 16:00:00
4) Start 09/01/2015 12:00:00 Ends 09/01/2015 16:00:00
今天是
10/01/2015
我需要请求返回 3 个事件 (#1-2-3) 并将 #4 排除为:
1) Is Starting today and Ends today
2) Starts today and Ends tomorrow (so it is running today as well)
3) Started yesterday and Ends after tomorrow (so it is running today as well)
4) Is not running today
所以问题是最好的方法是什么?也许有人至少可以提示如何确定今天的开始时间戳和结束时间戳(10/01/2015 00:00:00 和 10/01/2015 24:00:00,如果我是正确的???)
【问题讨论】:
所以你在一个字符串中有开始和结束日期? @ClausBönnhoff: No-no) 我在核心日期表中有两个日期类型的属性... 那么只获取 startdate 为 today 的数据有什么问题?还是我理解错了? 不清楚你在问什么。如果你同时想要 1、2、3 和 4,你只需要使用NSPredicate
来获取,使用 NSDateComponents
获取昨天和明天的 NSDate
(可能使用“午夜”,并使用这样的谓词:(startDate >= %@) AND (endDate <= %@), yesterdayDate, tomorrowDate
;
您的问题到底是什么?如何获得代表日期边界的NSDate
s?如何构建NSPredicate
字符串?
【参考方案1】:
好的,我认为您的主要问题是如何获取日期边界(即代表特定日期 0:00h 的 NSDate
实例)。这其实很简单:
NSDate *startOfDay;
[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay
startDate:&startOfDay
interval:NULL
forDate:yourDate];
给定任何日期 (yourDate
),startOfDay
将是同一日期,但在 0:00h。
有了这些信息,构建谓词字符串应该很简单。条件应该是这样的:
event.startDate <= endOfDay AND event.endDate >= startOfDay
【讨论】:
谢谢丹尼尔,实际上我设法获得了 DateStart 和 DateEnd 时间戳(但你的方式要好得多,并且会使用它),但主要问题是构建预测请求......无法数字知道怎么做,看起来它一定是一个复杂的...... 看起来像这样: if (eventStart >= dayStart and eventStart = dayStart) OR (eventStart=dayEnd) OR (eventStart >=dayStart ) 不应该是一个简单的event.startDate <= endOfDay AND event.endDate >= startOfDay
工作吗?还是我错过了什么?
例如,如果活动昨天开始,明天结束,在这种情况下将不会显示...但它必须因为活动今天处于活动状态...我说的对吗?
当你在柏林时,啤酒就在我身上!)以上是关于检查时间间隔是不是在今天的主要内容,如果未能解决你的问题,请参考以下文章