2

Hackbook のサンプル コードを使用してFacebook の友達のリストを取得するアプリを作成していますが、今月の誕生日の Facebook の友達のリストを取得して、このコードを使用しているすべての友達のリストを取得したいと考えています。

 public static void requestFriends(FacebookRequest facebookRequest) {
    Log.d(LOG_TAG, "requestFriends(" + ")");
    String query = "select name, birthday, uid, pic_square from user where uid in (select uid2 from friend where uid1=me()) order by birthday_date";
    Bundle params = new Bundle();
    params.putString("method", "fql.query");
    params.putString("query", query);
    FacebookUtility.asyncRunner.request(null, params, new FacebookRequestListener(FacebookRequestListener.FRIENDS, facebookRequest));
}

それでも私は以下のコードを使用して、当月の誕生日の友達のリストを取得しています:

 Calendar c = Calendar.getInstance(); 
    int month = c.get(Calendar.MONTH)+ 1;

    String query = "select name, birthday, uid, pic_square from user where uid in " +
    "(select uid2 from friend where uid1=me())AND birthday_date >= '" + month + "/01' AND birthday_date <= '" + month + "/31' ORDER BY birthday_date ASC";

しかし、どこに行方不明なのですか?

4

2 に答える 2

1

このクエリを使用して、現在の月の Facebook の友達を昇順で取得します。

SELECT name, birthday, uid, pic_square FROM user WHERE uid in (SELECT uid2 FROM friend WHERE uid1=me())AND birthday_date >= '01/01/2013' AND birthday_date <= '31/01/2013' ORDER BY birthday_date

于 2013-01-22T16:03:33.193 に答える
1

できることは、使用している言語を使用して次の値を計算し、FQL で使用することです。

1st's day of the current month (17),
Today's month of the year (01)
End date day of the current month (31)

日と月がそれぞれ dd と MM を使用してフォーマットされていることを確認してください (1 桁の場合はゼロで埋められます)。次に、FQL は次のようになります。

SELECT name, birthday_date
  FROM user 
  WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
  AND strlen(birthday_date) != 0
  AND (
       substr(birthday_date, 0, 2) = '01'
       AND substr(birthday_date, 3, 5) >= '01'
       AND substr(birthday_date, 3, 5) < '31'
  ) 
  ORDER BY birthday_date

これにより、誕生日が 1 月 1 日から 1 月 31 日までの友人が返されます。

更新: 今月と今月の最後の日付を計算します:

Calendar cal=Calendar.getInstance();
int currentmonth=cal.get(Calendar.MONTH)+1

public static Date getLastDateOfMonth(int year, int month) {
   Calendar calendar = new GregorianCalendar(year, month, Calendar.DAY_OF_MONTH);
   calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
   return calendar.getTime();
}
于 2013-01-17T07:54:32.463 に答える