Выберите предыдущую дату (уменьшение на 1) и конвертируйте в Unix TimeStamp

Я пытаюсь получить ленту новостей с помощью FQL Facebook (API).

Пытаясь просмотреть результаты, я изначально использовал параметры 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 рекомендует использовать ограничения time.

Теперь мне нужно изменить код, чтобы потоки загружались каждый день. Например:

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

Но как уменьшить 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 когда я надеялся, что это будет 16 декабря. Любая помощь будет оценена.

Спасибо.


person SSL    schedule 17.12.2012    source источник


Ответы (2)


Вы хотите использовать метод добавления календаря вместо набора, см. ответ в этой теме:

Уменьшить дату в Java

person phnom    schedule 17.12.2012

Я обнаружил, что вычитаю дневные секунды из исходной временной метки Unix, созданной при каждом проходе. Благодаря этому ответу здесь: https://stackoverflow.com/a/5128186/450534

Итак, каждый раз, когда в целях пейджинга я вызываю AsyncTask, который извлекает данные, я вычитаю 86400 секунд из временной метки Unix.

Это работает как шарм.

person SSL    schedule 17.12.2012