【问题标题】:Select Previous Date (Decerement by 1) And Convert To Unix TimeStamp选择上一个日期(减 1)并转换为 Unix 时间戳
【发布时间】:2012-12-17 12:21:58
【问题描述】:

我正在尝试使用 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时间戳的解决方案是这样实现的:

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

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

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 日。任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: android facebook-fql android-date


    【解决方案1】:

    你想使用 Calendar 的 add 方法而不是 set,看这个帖子的答案:

    Decrement a date in Java

    【讨论】:

      【解决方案2】:

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

      因此,每次出于分页的目的,我都会调用AsyncTask 来获取我从 Unix 时间戳中减去 86400 秒的数据。

      这就像一个魅力。

      【讨论】:

        猜你喜欢
        • 2020-10-19
        • 1970-01-01
        • 2020-12-23
        • 2016-04-24
        • 2012-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多