查询解析大于今天的日期
Query Parse for dates greater than Today
我正在尝试查询我的 Parse
数据库中所有 日期大于今天的日期。
然后我会在 table 中列出这些项目。
我不能完全让它工作,而且我也不确定将日期放入我的 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) {
解析数据库:
对于我遗漏或需要添加的内容有什么想法吗?
对我来说,我不使用不同的日期格式存储在数据库中。我在数据库中放入了双倍值。便于比较。
double d_dateTime = [[NSDate date] timeIntervalSince1970];
上述代码的问题在于您将日期存储为 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 时间存储,这是留给 reader 的练习。
将日期保存为对象字段
这应该很明显,但是首先要保存日期,你会做这样的事情:
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) {
我正在尝试查询我的 Parse
数据库中所有 日期大于今天的日期。
然后我会在 table 中列出这些项目。
我不能完全让它工作,而且我也不确定将日期放入我的 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) {
解析数据库:
对于我遗漏或需要添加的内容有什么想法吗?
对我来说,我不使用不同的日期格式存储在数据库中。我在数据库中放入了双倍值。便于比较。
double d_dateTime = [[NSDate date] timeIntervalSince1970];
上述代码的问题在于您将日期存储为 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 时间存储,这是留给 reader 的练习。
将日期保存为对象字段
这应该很明显,但是首先要保存日期,你会做这样的事情:
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) {