查询解析日期大于今天的日期

时间:2015-02-15 03:21:04

标签: ios parse-platform nsdate

我试图查询我的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) {

解析数据库:

enter image description here

我缺少或需要添加的任何想法?

2 个答案:

答案 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];