2012-12-17 2 views
0

Facebook (API) FQL을 사용하여 Newsfeed를 가져 오려고합니다. 페이지 결과에 시도에서 이전 날짜 선택 (Decerement by 1) 및 Unix TimeStamp로 변환

, 내가 처음 LIMIT를 사용하여 오프셋 매개 변수를 다음과 같이했다 :

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 및 매개 변수가 반드시 당신에게 모든 결과를 제공하지 않고에 대한 검색이 SO 페이스 북이 시간 제약을 사용하는 것이 좋습니다 것으로 나타났다 OFFSET :이 대답에서 논리를했다.

이제 피드를 매일 가져 오도록 코드를 수정해야합니다. 예를 들어 :

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

유닉스 타임 스탬프로 현재 시간을 변환하는 솔루션을지고, 약간의 검색 후는 다음과 같이 이루어졌다 : 데이터의 모든 새로운 세트,

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 일이 될 것이라고 기대했다입니다 때. 어떤 도움을 주시면 감사하겠습니다.

감사합니다.

답변

0

나는 각 패스에 생성 된 원래 유닉스 타임 스탬프에서 하루의 가치가 초를 뺀 발견했다. 여기이 답변에 감사 :

그래서, 매번는, 페이징의 목적을 위해, 내가 데이터를 페치 AsyncTask 전화 https://stackoverflow.com/a/5128186/450534 나는 유닉스 타임 스탬프에서 86400초을 뺍니다.

이것은 매력처럼 작동합니다.

관련 문제