0

我需要帮助来提出 JavaScript 中的函数。该函数应该能够从这种格式的日期列表中找到最早的日期yyyy-mm-dd hh:mm:ss。因此,该函数将接收一个文本,并在这些行中找到最旧的日期条目并选择与该日期关联的文本。

此外,如果有可以解决这个问题的 Java 解决方案,我将使用一些东西将 Java 包含在 JavaScript 中。

4

4 回答 4

3

这是您将如何做到的...

  1. 将日期作为数组进行迭代,将它们转换为 Unix 纪元。
  2. 找到最古老的Math.min.apply(Math, arrayOfDates)或更好的Math.min(...arrayOfDates)
于 2012-08-23T00:42:13.473 回答
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
于 2012-08-23T00:45:10.587 回答
0

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

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

或者,由于您的格式确实有前导零,因此简单的字符串排序也会这样做。要仅搜索最小字符串,您可以使用以下命令:

var min = datestrings.reduce(function(min, cur) {
    return cur < min ? cur : min;
});
于 2012-08-23T00:45:49.817 回答
0

使用 jquery 的 Wibbly-wobbly $$$y-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
于 2012-08-23T01:16:08.807 回答