【问题标题】:How to show only objects from current date and past dates JSON如何仅显示当前日期和过去日期 JSON 中的对象
【发布时间】:2013-07-08 20:00:14
【问题描述】:

好的,这是瘦的。我已经对此进行了搜索,但没有找到完全正确的问题。 (我在 xcode 中写这个)

我的任务应该是简单的,而且很可能是,但我在开始时遇到了麻烦......

我需要下载 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!"
},

提前感谢您的帮助。

【问题讨论】:

  • 这个问题更多地与您用于处理数据的语言有关,而不是与 JSON 有关。如果您适当地标记您的问题(使用语言),您将获得更多视图。
  • 完成!谢谢!非常感谢。
  • 日期的来源无关紧要。实际问题是比较日期。只有当日期与今天的日期匹配时,您才需要通过从旧列表中复制项目来构建相关项目的新列表。如需比较日期,请参阅stackoverflow.com/questions/1811779/comparing-dates-in-coc
  • 这与 JSON 完全无关。
  • 我要比较的数据来自 JSON。

标签: objective-c json


【解决方案1】:

以下是进行此比较的基本思路:

- (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 中指定时区。使用日历和日期组件是进行此类比较的最安全方法。

【讨论】:

  • 太棒了,感谢您的指导。不太确定该从哪里开始。我会在接下来的几天里试一试,然后带着我得到的东西回来。非常感谢您的帮助。
猜你喜欢
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
相关资源
最近更新 更多