从 JSON 响应输出下一个可用日期

Outputting Next Available Date from JSON Response

我正在使用来自 Eventbrite API 的 JSON 响应来显示 'next' 活动巡回日期。该日期将通过查看当前时间并查找当前时间之后的下一个事件来自动计算。

这是我需要解析的 JSON 响应:

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

如果我现在正在检查它,我希望从第 277 行 return编辑日期 (2017-11-11T11:00:00)。如果我在几个小时后检查它,我想 return 第 350 行 (2017-12-09T11:00:00),因为那是下一个可用的游览日期。

我的当前脚本(下方)return是来自上面 JSON 回复的系列的第一个日期。但是,在考虑当前时间后,我需要将其修改为 return 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>

我会过滤掉任何已经通过的事件,然后如果有的话使用第一个。所以处理响应的函数看起来像这样。

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
  }
}

javascript 数组的过滤函数采用测试函数和 returns 一个新数组,其中只有第二个数组中的元素在传递到测试函数时返回 true。