如何比较数组中的日期以找到最早的日期?

时间:2015-07-27 11:57:59

标签: javascript

我有一个名为dateArray的变量,其中包含日期 例如

["09/09/2009", "16/07/2010", "29/01/2001"]

我希望找到最早的带有for循环的结果,结果将是

"29/01/2001" - or dateArray[2]

语言是javascript

5 个答案:

答案 0 :(得分:1)

有时最基本的方法是最好的:

var dates = ["09/09/2009", "16/07/2010", "29/01/2001"];
var min = dates[0];
for(var i = 1; i < dates.length; i++) {
  if (fDate(dates[i]) < fDate(min))
    min = dates[i];
}

alert(min);

// create a proper Date object from the string
function fDate(s) {
  var d = new Date();
  s = s.split('/');
  d.setFullYear(s[2]);
  d.setMonth(s[1]);
  d.setDate(s[0]);
  return d;
}

我上面为您编写的代码将每个字符串转换为Date对象,然后从它们中找到最小值(最早的日期)。没有字符串黑客,只是简单的日期比较。它返回数组中的原始字符串。

答案 1 :(得分:1)

   var dateArray = ["09/09/1980","09/09/2009", "16/07/2010", "29/01/1990"];
   var first = dateArray[0].split("/").reverse().join("-");
   var arrayLength = dateArray.length;
   for(var i=1; i< arrayLength; i++){
   second = dateArray[i].split("/").reverse().join("-");
     if (first > second){
        first = second;
     }
   }
alert(first);

答案 2 :(得分:0)

您可以尝试使用momentjs库:

&#13;
&#13;
var dateArray = ["09/09/2009", "16/07/2010", "29/01/2001"],
    format = 'DD/MM/YYYY',
    minDate = moment(dateArray[0], format),
    minDateKey = 0;

for (var i = 1; i < dateArray.length; i++) {
  var date = moment(dateArray[i], format);
  if (minDate > date) {
    minDate = date;
    minDateKey = i;
  }
}

alert(minDateKey);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.3/moment.min.js"></script>
&#13;
&#13;
&#13;

答案 3 :(得分:-1)

最简单的方法是创建日期对象,你可以检查grater / equal ..(date1&gt; date2)

创建日期的示例:Convert dd-mm-yyyy string to date

答案 4 :(得分:-2)

您可以通过以下循环获取最早的日期

var dateArray = ["09/09/2009", "16/07/2010", "29/01/2001"];
    alert(dateArray)//convert string to date object
var earliest = dateArray[0];
for(i=0; i<=dateArray.length; i++){
  var date1 = dateArray[i];
  if (date1 > earliest) {
     earliest = date1;

  }
}
alert(earliest)