在日期列表中查找最早的日期

时间:2012-08-23 00:38:07

标签: javascript date

我需要帮助来提供JavaScript中的功能。该函数应该能够以此格式yyyy-mm-dd hh:mm:ss找到日期列表中最早的日期。因此,该函数将接收文本,并且在行之间应该找到最早的日期条目并选择与该日期相关联的文本。

此外,如果有解决此问题的Java解决方案,我将使用一些内容在JavaScript中包含Java。

4 个答案:

答案 0 :(得分:3)

以下是你将如何做到这一点......

  1. 将日期作为数组进行迭代,将它们转换为Unix时代。
  2. 找到最早的Math.min.apply(Math, arrayOfDates)或更好Math.min(...arrayOfDates)

答案 1 :(得分:3)

这样做,假设datelist是字符串,并且每个日期都在它自己的行上:

var oldest = (function() {var o = ":", c, a=datelist.split(/\r?\n/); while(c=a.shift()) o = o < c ? o : c; return o;})();

打破这一点,这是它的工作原理:它基本上是创建一个函数,运行它,然后获得它的返回值。功能如下:

var o = ":",
  // ":" comes after "9" in the character map, so it will be greater than any date
    c, a = datelist.split(/\r?\n/);
  // split on newlines, accomodating both \r and `\r\n` options.
while(c = a.shift()) {
  // basically loop through each date
    o = o < c ? o : c;
  // if the current oldest date is older than the one we're looking at, keep the old one
  // otherwise the new date is older so should be kept
}
return o;
  // return the result

答案 2 :(得分:0)

您可以将所有日期字符串转换为Date个对象,然后对列表numerically进行排序并获取第一个项目。或者,如果您不需要排序列表,则可以在其上应用Math.min以获得最低值。

var minDate = Math.min.apply(null, datestrings.map(Date));

或者,由于您的格式确实具有前导零,因此简单的string sort也会执行相同的操作。要仅搜索最小字符串,您可以使用:

var min = datestrings.reduce(function(min, cur) {
    return cur < min ? cur : min;
});

答案 3 :(得分:0)

使用jquery的Wibbly-wobbly dollary-wollarsy示例:

  $("body").append($("<div>").attr("id", "q")); //some gratuitous jquery
  var timelist = "2012-03-03 10:14:21 \r\n 2012-05-15 21:21:12\r\n 2012-07-01 10:19:19\r\n2012-02-11 21:21:12";
  var datelist = timelist.split("\r\n");
  var oldest = ":";
  $.each(datelist, function (a) {
    var trimmedThis = $.trim(this);
    if (trimmedThis < latest) oldest = trimmedThis;
  });
  $("#q").text(oldest); //just to beef up the $ count