好的,这是瘦的。我对此进行了搜索,但没有发现这个问题。 (我在xcode fyi中写这个)
我的任务应该是容易的,但可能是但我开始时遇到了麻烦......
我需要下载JSON数据,它是一个只包含三个项目的对象列表,日期,项目,内容。基本上是3个字符串。日期不是创建的日期,而是整个对象的日期。用户希望能够一次预加载几周而无法让人们看到未来的日期。
我可以下载JSON数据没问题,我可以在列表中显示它,不是问题。我不确定如何使程序忽略日期不等于今天的对象。
任何人都对此有任何见解?下面是其中一个测试对象的样子。
@type: "Devotional",
@url: "http://api.storageroomapp.com/accounts/50ff0ad80f66027d84001680/collections/51c1ba270f6602499f0000ae/entries/51c1bc390f6602442c0002ec",
@collection_url: "http://api.storageroomapp.com/accounts/50ff0ad80f66027d84001680/collections/51c1ba270f6602499f0000ae",
@version: 2,
@trash: false,
@created_at: "2013-06-19T14:12:09Z",
@updated_at: "2013-07-08T19:38:51Z",
devotional_date: "2013-07-08",
devotional_title: "Test Today Devotional",
devotional_body: "This is a test of what Today's Daily Devotional would look like!"
},
提前感谢您的帮助。
答案 0 :(得分:0)
以下是进行此比较的基本思路:
- (void)testDateIsToday {
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *now = [NSDate date];
NSInteger dateUnits = NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit;
NSDateComponents *dateParts = [gregorian components:dateUnits fromDate:now];
NSString *dateString = @"2013-07-08"; // Date from your JSON
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd";
NSDate *requestedDate = [dateFormatter dateFromString:dateString];
NSDateComponents *requestedParts = [gregorian components:dateUnits fromDate:requestedDate];
NSLog(@"Equal? %i", [[gregorian dateFromComponents:requestedParts] compare:[gregorian dateFromComponents:dateParts]] == NSOrderedSame);
}
请注意,这将基于其运行的设备所在的时区进行比较,我猜这不会影响您,因为您没有在JSON中指定时区。使用日历和日期组件是进行此类比较的最安全的方法。