我试图查询我的Parse
数据库中所有日期大于今天的日期。
然后我会在表格中列出这些项目。
我无法让它工作,也不确定将日期放在我的Parse
数据库中的格式。
这是我尝试过的:
// Date
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterFullStyle];
NSString *dateToday = [formatter stringFromDate:[NSDate date]];
NSLog(@"Date Today: %@", dateToday);
// Initialize table data
PFQuery *query = [self queryForTable];
[query whereKey:@"dateTime" greaterThan:dateToday];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
解析数据库:
我缺少或需要添加的任何想法?
答案 0 :(得分:2)
上述代码的问题在于您将日期存储为String对象,而不是Date对象。这对您希望进行的比较查询没用。
使用iOS Parse库时,可以将NSDate对象传递给PFQuery。
NSDate* now_gmt = [NSDate date];
PFQuery *query = [self queryForTable];
[query whereKey:@"dateTime" greaterThan:now_gmt];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
您需要确保所有查询和日期都存储在GMT时间内,这是留给读者的练习。
将日期保存为对象字段
这应该是非常明显的,但是保存为首先保存日期,你会做类似的事情:
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:14];
[comps setMonth:2];
[comps setYear:2015];
NSDate* myDate = [[NSCalendar currentCalendar] dateFromComponents:comps];
PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];
testObject[@"test"] = @"Test 1";
testObject[@"testDate"] = myDate;
[testObject saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
答案 1 :(得分:1)
对我来说,我不使用存储在数据库中的不同日期格式。我把double值放在数据库中。这很容易比较。
double d_dateTime = [[NSDate date] timeIntervalSince1970];