0

Facebookは最近、タイムゾーンの少ないイベント(https://developers.facebook.com/roadmap/#timezone-less-events)を開発者ロードマップに追加しました。

「この移行は最初に作成されたため、イベントが発生すると予想されるタイムゾーンの名前(ここで定義)を示すタイムゾーンフィールドをイベントに追加しました。参考までに、ISO8601で時間を読み取る開発者は完全な標準をサポートする必要がありますイベント時間を読み取る場合。ほとんどのイベントは現地時間を返します(GMTオフセットなし)が、将来、イベントは他の形式(つまり、日付のみで正確)を返す可能性があります。」

ISO 8601形式の日付で機能しますが、エポック形式の日付を取得すると、常に+7時間の差が生じます。

例えば

https://graph.facebook.com/369000383135224リターン

{
  "id": "369000383135224",
  "owner": {
    "name": "Horst Uwe Peter",
    "id": "1117563687"
  },
  "name": "Event in Dublin time 10:25",
  "start_time": "2012-05-04T10:25:00",
  "end_time": "2012-05-04T11:25:00",
  "timezone": "Europe/Dublin",
  "location": "Dublin, Ireland",
  "venue": {
    "id": "110769888951990"
  },
  "privacy": "FRIENDS",
  "updated_time": "2012-05-04T09:27:29+0000",
  "type": "event"
}

http://graph.facebook.com/369000383135224?date_format=U

{
  "id": "369000383135224",
  "owner": {
    "name": "Horst Uwe Peter",
    "id": "1117563687"
  },
  "name": "Event in Dublin time 10:25",
  "start_time": 1336152300, <== Fri, 04 May 2012 17:25:00 GMT
  "end_time": 1336155900, <== Fri, 04 May 2012 18:25:00 GMT 
  "timezone": "Europe/Dublin",
  "location": "Dublin, Ireland",
  "venue": {
    "id": "110769888951990"
  },
  "privacy": "FRIENDS",
  "updated_time": 1336123649,
  "type": "event"
}

GRAPHエンドポイントを使用したFQL

graph.facebook.com/fql?q=SELECT eid、name、description、location、venue、start_time、end_time、update_time、creator、privacy FROM event WHERE eid = 369000383135224

{
  "data": [
    {
      "eid": 369000383135224,
      "name": "Event in Dublin time 10:25",
      "description": "",
      "location": "Dublin, Ireland",
      "venue": {
        "id": 110769888951990
      },
      "start_time": 1336152300, <== Fri, 04 May 2012 18:25:00 GMT
      "end_time": 1336155900, <== Fri, 04 May 2012 18:25:00 GMT
      "update_time": 1336123649,
      "creator": 1117563687,
      "privacy": "FRIENDS"
    }
  ]
}

これは、移行がISO 8601形式の日付に対してのみ機能することを意味しますか?FQLまたはエポック日付形式には影響しませんか?

4

1 に答える 1

1

私が管理しているページのイベントで、タイムゾーンが返されませんでした。

私が見つけたのは、フロントエンド ダイアログに入力されたイベント時間は、"America/Los_Angeles" の現地時間として扱われることです (米国の夏時間の変更が完了しているため、冬には +6、夏には +7 が表示されます)。その後、データベースに保存するために「UTC」に変換されます。

表示のために、次の php 関数を使用して正しい時刻を表示し、時刻がイベントの場所に対してローカルであることをページに示します。

function fb_event_time_convert($fb_time) {
$origin_dtz = new DateTimeZone('UTC');
$remote_dtz = new DateTimeZone('America/Los_Angeles');
$fb_time_str = '@' . $fb_time;
$origin_dt = new DateTime($fb_time_str, $origin_dtz);
$remote_dt = new DateTime($fb_time_str, $remote_dtz);
$offset = $origin_dtz->getOffset($origin_dt) - $remote_dtz->getOffset($remote_dt);
return $fb_time - $offset;
}
于 2012-05-04T13:24:17.153 に答える