how can I compare dates in array to find the earliest one?

前端 未结 5 1643
故里飘歌
故里飘歌 2021-01-21 00:41

I have a variable called dateArray with dates in it for example

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

and I want to find the earlies

相关标签:
5条回答
  • 2021-01-21 01:08

    Sometimes the most basic approach is the best:

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

    The code I wrote for you above converts each string into a Date object, and then finds the minimum (the earliest date) from them. No string hacks, just straightforward date comparison. It returns the original string from the array.

    0 讨论(0)
  • 2021-01-21 01:08

       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);

    0 讨论(0)
  • 2021-01-21 01:10

    You can get the earliest date by the below loop

    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)
    
    0 讨论(0)
  • 2021-01-21 01:20

    The easiest way is to create dates object and the you can check grater/equal.. (date1 > date2)

    Example to create date: Convert dd-mm-yyyy string to date

    0 讨论(0)
  • 2021-01-21 01:29

    You can try with momentjs library:

    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);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.3/moment.min.js"></script>

    0 讨论(0)
提交回复
热议问题