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ずつ増やして、次のフィードのセットをフェッチします。私はこの答えから論理を取りました:https ://stackoverflow.com/a/13265776/450534

ただし、問題は、LIMITパラメーターとOFFSETパラメーターが必ずしもすべての結果を提供するわけではなく、SOで検索すると、Facebookが時間制約の使用を推奨していることが明らかになりました。

次に、フィードが毎日フェッチされるようにコードを変更する必要があります。例えば:

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)
.
.
.
.

少し検索した後、現在の時刻をUnixTimeStampに変換するソリューションを取得することは次のように達成されました。

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

しかし、新しいデータセットごとに、を1ずつ減らすにはどうすればよいDateですか?私はこのコードを試しました:

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

setの代わりにCalendarのaddメソッドを使用したい場合は、次のスレッドの回答を参照してください。

Javaで日付をデクリメントする

于 2012-12-17T12:50:31.487 に答える
0

各パスで作成された元のUnixタイムスタンプから1日の価値のある秒を引くことがわかりました。ここでこの答えに感謝します:https ://stackoverflow.com/a/5128186/450534

したがって、毎回、ページングの目的で、Unixタイムスタンプから86400AsyncTask秒を引いたデータをフェッチする を呼び出します。

これは魅力のように機能します。

于 2012-12-17T14:40:57.827 に答える