Ios 按日期查询

Ios 按日期查询,ios,parse-platform,pfquery,Ios,Parse Platform,Pfquery,我试图用PFQuery搜索所有包含特定日期无时间的结果。我似乎不明白为什么它不起作用。我使用的代码如下 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"YYY-MM-dd"]; NSString *today; today = [dateFormat stringFromDate:[NSDate date]]; PFQuery *query = [PFQ

我试图用PFQuery搜索所有包含特定日期无时间的结果。我似乎不明白为什么它不起作用。我使用的代码如下

 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
 [dateFormat setDateFormat:@"YYY-MM-dd"];
 NSString *today;
 today = [dateFormat stringFromDate:[NSDate date]];

 PFQuery *query = [PFQuery queryWithClassName:@"Booking"];

 [query whereKey:@"nextAppointment" equalTo:today];

 [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) { etc etc...
使用解析网站将字段nextAppoint设置为日期。
任何帮助都将不胜感激

NSDate对象和Parse.com日期字段都有包括小时和分钟在内的精确时间。这意味着,如果您正在寻找某一天发生的约会,您实际上是在搜索一个日期范围:从该特定日期的上午12:00到晚上11:59的范围

如果您创建的NSDate没有明确的小时和分钟,Parse不知道您指的是当天的所有日期——它通过填充小时和分钟并搜索准确的时间来解释它。你可以通过日期范围搜索来解决这个问题

下面是一个如何从我的一个应用程序中执行此操作的示例,该应用程序已为您的目的进行了修改:

//Create two dates for this morning at 12:00am and tonight at 11:59pm
NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:now];
[components setHour:0];
[components setMinute:0];
[components setSecond:1];
NSDate *morningStart = [calendar dateFromComponents:components];

[components setHour:23];
[components setMinute:59];
[components setSecond:59];
NSDate *tonightEnd = [calendar dateFromComponents:components];

PFQuery *query = [PFQuery queryWithClassName:@"Booking"];
[query whereKey:@"nextAppointment" greaterThan:morningStart];
[query whereKey:@"nextAppointment" lessThan:tonightEnd];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        //Etc...
    }
}];

NSDate对象和Parse.com日期字段都有精确的时间,包括小时和分钟。这意味着,如果您正在寻找某一天发生的约会,您实际上是在搜索一个日期范围:从该特定日期的上午12:00到晚上11:59的范围

如果您创建的NSDate没有明确的小时和分钟,Parse不知道您指的是当天的所有日期——它通过填充小时和分钟并搜索准确的时间来解释它。你可以通过日期范围搜索来解决这个问题

下面是一个如何从我的一个应用程序中执行此操作的示例,该应用程序已为您的目的进行了修改:

//Create two dates for this morning at 12:00am and tonight at 11:59pm
NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:now];
[components setHour:0];
[components setMinute:0];
[components setSecond:1];
NSDate *morningStart = [calendar dateFromComponents:components];

[components setHour:23];
[components setMinute:59];
[components setSecond:59];
NSDate *tonightEnd = [calendar dateFromComponents:components];

PFQuery *query = [PFQuery queryWithClassName:@"Booking"];
[query whereKey:@"nextAppointment" greaterThan:morningStart];
[query whereKey:@"nextAppointment" lessThan:tonightEnd];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        //Etc...
    }
}];

你说下一次约会是什么意思?你说下一次约会是什么意思?我从来没有这样想过。非常感谢您的帮助。使用[NSDate date]您会认为电话的日期设置正确!如果您希望得到相同的结果,但[NSDate日期]不正确,怎么样?我从来没有这样想过。非常感谢您的帮助。使用[NSDate date]您会认为电话的日期设置正确!如果您希望得到相同的结果,但[NSDate]不正确,如何?