Parse.com 查询两个日期

Posted

技术标签:

【中文标题】Parse.com 查询两个日期【英文标题】:Parse.com Query with two dates 【发布时间】:2014-08-04 17:35:28 【问题描述】:

我的数据库中的解析对象有一个日期字段,我必须将其用作过滤器来向用户显示特定日期的一些结果。我要求用户选择一个带有 UIPickerDate 的日子,他们我正在使用这个约束创建一个查询:

        [query whereKey:@"meetingDateAndTime" equalTo:appDelegate.meetingDateAndTime]; // appDelegate.meetingDateAndTime represent the UIPickerDate date

问题是即使我使用 UIDatePickerModeDate 设置 UIPickerDate 日期也包含时间,所以查询不会检索任何内容。 然后我想创建另外两个日期,前 1 天的时间为 23:59,另一天后的时间为 00:00,然后添加两个解析约束,如下所示:

    NSDate *choosedDate = appDelegate.meetingDateAndTime;

    NSDateComponents *dayComponentPrev = [[NSDateComponents alloc] init];
    NSDateComponents *dayComponentNext = [[NSDateComponents alloc] init];
    dayComponentPrev.day = -1;
    dayComponentNext.day = +1;
    NSCalendar *theCalendar = [NSCalendar currentCalendar];
    NSDate *prevDate = [theCalendar dateByAddingComponents:dayComponentPrev toDate:choosedDate options:0];
    NSDate *nextDate = [theCalendar dateByAddingComponents:dayComponentNext toDate:choosedDate options:0];

    NSDateComponents *componentsPrev = [theCalendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:prevDate];
    [componentsPrev setHour:23];
    [componentsPrev setMinute:59];
    NSDate *prevOk = [theCalendar dateFromComponents:componentsPrev];

    NSDateComponents *componentsNext = [theCalendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:nextDate];
    [componentsNext setHour:0];
    [componentsNext setMinute:0];
    NSDate *nextOk = [theCalendar dateFromComponents:componentsNext];

    [query whereKey:@"meetingDateAndTime" greaterThan:prevOk];
    [query whereKey:@"meetingDateAndTime" lessThan:nextOk];

该解决方案有效,但我想知道是否有更优雅的方法来做到这一点。 作为 ios 和 Parse 的新手,我倾向于使事情过于复杂......有什么建议吗?

【问题讨论】:

【参考方案1】:

不,这是最好的解决方案。

您可以做的是确保您创建的任何会议对象始终具有相同的时间。日期并不是真正的日期,它是一个时间点,所以没有时间就不可能有日期。

因此,获取日期等于今天的所有内容是没有意义的,因为没有日期“今天”。

因此,如果您将每个事件的时间设置为所选日期的 00:00,那么您可以查询所选日期 00:00 的所有会议。

否则,您所做的查询将是最好的。

【讨论】:

不幸的是我无法设置所有对象的时间,因为这是应用程序所必需的。无论如何,谢谢你,我很高兴我找到了正确的解决方案 XD。

以上是关于Parse.com 查询两个日期的主要内容,如果未能解决你的问题,请参考以下文章

Parse.com 查询麻烦

将日期字段保存到 Parse:键的类型无效,预期日期,但得到字符串

Parse.com 查询 PFUser CurrentUser

Swift,parse.com:如何从查询中传递数据

Parse.com 查询未加载

Parse.com 查询超过 1000 个对象