2017-11-11 11 views
0

私はEventbrite APIのJSON応答を使用して、 '次の'イベントツアーの日付を表示しています。この日付は、現在の時刻を見て、現在の時刻より後の次のイベントを見つけることによって自動的に計算されます。私は今それをチェックしていた場合、私は日付がライン277 (2017-11-11T11:00:00)から返されるのでしょうJSONレスポンスから次の利用可能な日付を出力する

https://jsfiddle.net/dgc223/k9dbvzoo/

:ここ

は、私が解析する必要がJSON応答です。私が数時間後にそれを確認していたら、私はツアーの次の利用可能な日付であるので、350 (2017-12-09T11:00:00)という行を返すことを望むでしょう。

上記のJSONレスポンスからシリーズの最初の日付を返します(下記参照)。しかし、現在の時間を考慮した上でNEXT Tourの日付を返すように変更する必要があります。このようにして、スクリプトは、ツアーの次の利用可能な日付をユーザに知らせることにより、より有益なものになります。

<script> 
    $.getJSON('eventbrite_api2.php', { 
    eventid: '35719663475', 
    function: 'events' 
    }, function(response) { 
    var date = new Date(response.start.utc); //this formats the date to local 
    time zone 
    date.toString(); 
    event_start = date.toLocaleString('en-US', { 
     weekday: 'long', 
     day: 'numeric', 
     month: 'long', 
     year: 'numeric', 
     hour: 'numeric', 
     hour12: true, 
     timeZone: "America/New_York" 
    }); //this formats the date to eastern time zone, and makes some other formatting of the date 
    var content = "<h4>" + response.name.text + "</h4><p>The next event starts " + event_start + "</p>" + "<p>" + "<img width=\"350\" src=" + response.logo.original.url + "</img>"; 
    $("#eventbrite").append(content); 
    }); 
</script> 

答えて

1

すでに過ぎたイベントを除外し、最初にあったイベントがあればそれを使用します。したがって、応答を処理する関数は次のようになります。 JavaScriptのアレイの

function (response) { 
    var date = new Date(); 
    var upcoming = response.events.filter(function (event) { 
    // just compare the UTC representation 
    var start = new Date(event.start.utc); 
    return start > date; 
    }); 
    if (upcoming.length) { 
    //next event is upcoming[0]; Do what you want with it 
    } else { 
    //no events upcoming 
    } 
} 

フィルタ関数はテスト機能を取り、テスト関数に渡されたとき真を返した二番目の配列内の要素だけを使用して新しい配列を返します。

+0

ありがとうございます。私は次のエラーが発生しています:未定義のプロパティ 'フィルタ'を読み取ることができません –

+0

うーん。あなたのJSFiddleは、{ページング:{...}、イベント:[...]}のように構造化されたオブジェクトを示しました。イベント配列に対してfilterを呼び出す必要があります。 1つのイベントだけでなく、その配列を含む応答全体でコールバックを実行していることを確認してください。 –

+0

ありがとうございます - 私のコールバックの前には、全体の応答がありませんでした。さて、私は "TypeError:start.UTCは関数ではありません"を取得していますが、 –

関連する問題