2012-12-17 1 views
0

J'essaie d'aller chercher du fil d'actualité en utilisant le FQL Facebook (API).Sélectionner la date précédente (Décès de 1) et convertir en Unix TimeStamp

Dans une tentative de page de résultats, j'utilisais d'abord LIMIT et OFFSET paramètres comme ceci:

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 

Et puis à chaque fois, je frappe la fin de la ListView, je lance une autre requête et lire la prochaine ensemble de Feeds en incrémentant le OFFSET de +20. Je pris la logique de cette réponse: https://stackoverflow.com/a/13265776/450534

Cependant, le problème est, les paramètres LIMIT et OFFSET ne vous donnent pas nécessairement tous les résultats et la recherche sur le SO a révélé que Facebook recommande d'utiliser temps contraintes.

Maintenant, j'ai besoin de modifier le code afin que les flux soient récupérés pour chaque jour. Par exemple:

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

Après avoir cherché un peu, obtenir une solution pour convertir le temps en cours dans un timestamp Unix a été réalisé comme ceci:

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

Mais, pour chaque nouvel ensemble de données, comment puis-je diminuer le Date par 1? J'ai essayé ce morceau de code:

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

Mais le résultat est: Thu Nov 29 17:18:50 GMT+05:30 2012 quand j'espérais que ce serait 16 Décembre. Toute aide serait appréciée.

Merci.

Répondre

0

Je trouve la soustraction d'une valeur de secondes de jour de la Timestamp Unix original créé à chaque passage. Merci à cette réponse ici: https://stackoverflow.com/a/5128186/450534

Ainsi, chaque fois que, aux fins de recherche de personnes, j'appelle les AsyncTask qui récupère les données je soustrais secondes du Timestamp Unix.

Cela fonctionne comme un charme.