【问题标题】:Filtering out the nearest date from an array从数组中过滤出最近的日期
【发布时间】:2018-01-03 16:31:29
【问题描述】:

我有一个场景,我想从我从 ajax 调用中获得的一堆数据中选择最近的日期或过去的日期。

例如:如果我得到三个不同日期的三行,例如 2018 年 12 月 12 日、2018 年 12 月 3 日和 2018 年 1 月 1 日,那么我想返回 2018 年 1 月 1 日。 而且如果数组不包含过去的日期,那么它应该返回最接近当前日期的日期。

请给我一些建议来实现这一目标。

【问题讨论】:

  • 请用您从 AJAX 调用中获得的一些数据更新您的问题。
  • 看起来很简单:计算现在和日期之间的差异并返回最小的。您应该尝试实施它并在遇到特定问题时提出问题。另外:你确定Java标签是正确的吗? jquery 标签让我觉得你可能更需要一个 JavaScript 解决方案。
  • 标签java和jquery的组合很奇怪,你的意思是javascript吗?
  • 最近的过去日期(如果有),或者只是过去或未来的最近日期?如果这组包括 2017 年 12 月 16 日和 2018 年 1 月 10 日,而今天是 2018 年 1 月 4 日,你想要哪一个?
  • 您的日期是如何表示的? java.time.LocalDate 对象?在 Java 中,这将是标准和推荐的表示。

标签: java jquery date


【解决方案1】:

也许这样的函数会很有用:

function getNearestDate(dates, date) {

    if (!dates || dates.length == 0) {
        return null;
    }

    if (!date) {
        date = new Date();
    }
    var result = dates[0];
    var dt = Math.abs(new Date(dates[0])-date);
    var minimum = dt;

    for (var i=1;i<dates.length;i++) {
        dt = Math.abs(new Date(dates[i])-date);
        if (dt < minimum) {
            result = dates[i];
            minimum = dt;
        }
    }
    return result;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 2017-07-27
    • 2015-11-05
    相关资源
    最近更新 更多