繁体   English   中英

Parse.com查询有两个日期

[英]Parse.com Query with two dates

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

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

问题是,即使我使用UIDatePickerModeDate设置UIPickerDate,日期也包含时间,因此查询不会检索任何内容。 然后我想创建另外两个日期,第一天前一天,时间是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来说是新手,我倾向于过于复杂化......有什么建议吗?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM