0

我正在尝试使用 Facebook (API) FQL 获取新闻源。

在尝试对结果进行分页时,我最初使用 LIMIT 和 OFFSET 参数,如下所示:

SELECT post_id,.... FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid = me() AND type = 'newsfeed') AND is_hidden = 0 LIMIT 20 OFFSET 0

然后每次,我到达末尾ListView,我运行另一个查询并通过将 OFFSET 增加 +20 来获取下一组 Feed。我从这个答案中得到了逻辑:https ://stackoverflow.com/a/13265776/450534

然而,问题是,LIMIT 和 OFFSET 参数并不一定会给你所有的结果,搜索 SO 显示 Facebook 建议使用时间限制。

现在我需要修改代码,以便每天获取 Feed。例如:

Initial Set Of Data - `created_time < 1355788800` (17th December)
Second Set Of Data - `created_time < 1355702400` (16th December)
Third Set Of Data - `created_time < 1355616000` (15th December)
.
.
.
.

经过一番搜索,获得了将当前时间转换为 Unix TimeStamp 的解决方案,如下所示:

Date now = new Date();
long unixTime = new Long(now.getTime()/1000);

但是,对于每组新数据,我如何减少Date1?我试过这段代码:

Calendar newCal = Calendar.getInstance();
Calendar xDate = (Calendar) newCal.clone();
xDate.set(Calendar.DATE, -1);
System.out.println(xDate.getTime().toString());

但结果是:Thu Nov 29 17:18:50 GMT+05:30 2012当我希望它是 12 月 16 日时。任何帮助将不胜感激。

谢谢你。

4

2 回答 2

0

我发现从每次通过时创建的原始 Unix 时间戳中减去一天的价值秒数。感谢这里的答案:https ://stackoverflow.com/a/5128186/450534

所以,每次,为了分页的目的,我都会调用从 Unix 时间戳中AsyncTask减去 86400秒的数据。

这就像一个魅力。

于 2012-12-17T14:40:57.827 回答
0

您想使用 Calendar 的 add 方法而不是 set,请参阅此线程中的答案:

减少Java中的日期

于 2012-12-17T12:50:31.487 回答