Heim >Web-Frontend >js-Tutorial >Wie speichere ich alle zwischen zwei angegebenen Daten vorhandenen Daten in einem Array in JavaScript?

Wie speichere ich alle zwischen zwei angegebenen Daten vorhandenen Daten in einem Array in JavaScript?

PHPz
PHPznach vorne
2023-09-03 12:45:101149Durchsuche

如何在 JavaScript 中将给定两个日期之间存在的所有日期存储在数组中?

Manchmal müssen wir alle Daten innerhalb eines bestimmten Datumsbereichs abrufen. In diesem Tutorial nehmen wir zwei Daten und ermitteln alle Daten zwischen den beiden Daten. Zusätzlich speichern wir alle Daten in einem Array.

Hier lernen wir drei Möglichkeiten kennen, alle Daten in einem Array zwischen zwei angegebenen Daten in JavaScript zu speichern.

Verwenden Sie die While-Schleife und die setDate()-Methode

Wir können eine While-Schleife zum Iterieren verwenden und die Methode setDate() verwenden, um das Datum im Datumsobjekt festzulegen. In jeder Iteration der while-Schleife können wir das Datum um einen Tag erhöhen und auf date1 setzen.

Grammatik

Benutzer können die while-Schleife und die setDate()-Methode gemäß der folgenden Syntax verwenden, um alle Daten zwischen zwei Daten abzurufen.

while (date1 <= date2) {
   dateArray.push(new Date(date1));
   date1.setDate(date1.getDate() + 1);
} 

In der obigen Syntax ist Datum1 das Startdatum und Datum2 das Enddatum.

Algorithmus

Schritt 1 – Erstellen Sie zwei Termine.

Schritt 2 – Überprüfen Sie mithilfe einer While-Schleife, ob Datum1 kleiner als Datum2 ist.

Schritt 3 – Erstellen Sie ein neues Datum aus date1 und verschieben Sie es in dateArray.

Schritt 4 – Holen Sie sich das Datum von Datum1 mit der Methode getDate() und addieren Sie 1.

Schritt 5 – Legen Sie das neue Datum mit der Methode setDate() fest.

Beispiel 1

Im folgenden Beispiel haben wir date1 und date2 mithilfe von Date-Objekten erstellt. Danach haben wir den obigen Algorithmus implementiert, um alle Daten zwischen zwei Daten abzurufen. In der Ausgabe kann der Benutzer alle Daten zwischen Datum1 und Datum2 beobachten.

<html>
<body>
   <h2>Using the <i> setDate() method and while loop</i> to get all dates between two dates in the array format. </h2>
   <div id = "output"></div>
   <script>
      var output = document.getElementById('output');
      var date1 = new Date("2023-01-01");
      var date2 = new Date("2023-01-11");
      output.innerHTML += "The date1 is " + date1 + "<br/>";
      output.innerHTML += "The date2 is " + date2 + "<br/>";
      var dateArray = [];
      while (date1 <= date2) {
         dateArray.push(new Date(date1));
         date1.setDate(date1.getDate() + 1);
      }
      output.innerHTML += "The date array is <br/>";
      for (let i = 0; i < dateArray.length; i++) {
         output.innerHTML += dateArray[i] + " <br/>";
      }
   </script>
</body>
</html>

Für Schleife und Gesamtmillisekunden des Datums verwenden

Bei dieser Methode erhalten wir die gesamten Millisekunden des ersten und zweiten Datums. Danach addieren wir die Millisekunden eines Tages zur Gesamtmillisekunden des aktuellen Datums und können mit den neuen Millisekunden ein Datum erstellen.

Auf diese Weise können wir alle Daten zwischen zwei angegebenen Daten finden und in einem Array speichern.

Grammatik

Benutzer können der folgenden Syntax folgen, um mithilfe einer for-Schleife alle Daten zwischen zwei Daten und die gesamten Millisekunden des Datums abzurufen.

for (var currentMillis = startMillis; currentMillis < lastMillis; currentMillis += milliOf1Day) {
   // pushing updated date to the array
   dateArray.push(new Date(currentMillis));
} 

In der obigen Syntax ist milliOf1Day die Gesamtzahl der Millisekunden an einem Tag.

Algorithmus

Schritt 1 – Ermitteln Sie die Gesamtzahl der Millisekunden zwischen dem aktuellen Datum und dem letzten Datum.

Schritt 2 – Verwenden Sie eine for-Schleife und initialisieren Sie die Variable currentMillis mit der Gesamtzahl der Millisekunden ab dem Startdatum.

Schritt 3 – Verwenden Sie eine for-Schleife zum Durchlaufen, bis Sie feststellen, dass die aktuellen Millisekunden kürzer sind als die Millisekunden des letzten Datums.

Schritt 4 – Fügen Sie zusätzlich 1 Tag Millisekunden zu currentMillis hinzu.

Schritt 5 – Erstellen Sie mit currentMillis ein neues Datum und verschieben Sie es in die dateArray-Variable in der for-Schleife.

Beispiel 2

In diesem Beispiel haben wir die Variable milliOf1Day, die die Gesamtzahl der Millisekunden für einen Tag speichert. Danach implementieren wir den obigen Algorithmus mithilfe einer for-Schleife und Millisekunden, um alle Daten zwischen zwei Daten abzurufen.

<html>
<body>
   <h2>Using the <i> setDate() method and while loop </i> to get all dates between two dates in the array format. </h2>
   <div id = "output"></div>
   <script>
      var output = document.getElementById('output');
      var firstDate = new Date("2022-11-01");
      var secondDate = new Date("2022-11-07");
      function getArrayOfDates(firstDate, secondDate) {
      
         // calculate milli seconds of 1 day
         var milliOf1Day = 24 * 60 * 60 * 1000;
         
         // calculate the total milliseconds of the start and end date
         let startMillis = firstDate * 1;
         let lastMillis = secondDate * 1;
         var dateArray = [];
         
         // In the for-loop, on every iteration, add the total milli seconds of 1 day to current milliseconds, and create a new date
         for (var currentMillis = startMillis; currentMillis < lastMillis;         currentMillis += milliOf1Day) {
            
            // pushing updated date to the array
            dateArray.push(new Date(currentMillis));
         } 
         return dateArray;
      }
      let dates = getArrayOfDates(firstDate, secondDate)
      output.innerHTML += "The firstDate is " + firstDate + "<br/>";
      output.innerHTML += "The secondDate is " + secondDate + "<br/>";
      output.innerHTML += "The date array is <br/>";
      
      // printing the date array
      for (let i = 0; i < dates.length; i++) {
         output.innerHTML += dates[i] + " <br/>";
      }
   </script>
</body>
</html>

Verwendung der momentJS-Bibliothek

Mit der

momentJS-Bibliothek können wir Daten manipulieren.

Grammatik

Benutzer können die momentJS-Bibliothek gemäß der folgenden Syntax verwenden, um alle Daten zwischen zwei Daten abzurufen.

while (currentDate.add(1, "days").diff(lastDate) < 0) { 
   allDates.push(currentDate.clone().toDate());
}

In der obigen Syntax haben wir die Methoden add() und diff() der momentJS-Bibliothek verwendet.

Beispiel 3

Im folgenden Beispiel erhalten wir das Startdatum und das letzte Datum vom Benutzer. Danach verwenden wir das Eingabedatum und erstellen das Datum mithilfe der momentJS-Bibliothek.

Als nächstes verwenden wir die Methode add(), um einen Tag zum aktuellen Datum hinzuzufügen. Zusätzlich verwenden wir die Methode diff(), um die Differenz zwischen dem aktuellen Datum und dem letzten Datum zu ermitteln.

<html>
<head>
   <script src ="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
   <script src = "https://cdnjs.cloudflare.com/ajax/libs/momentrange/4.0.1/moment-range.js"> </script>
</head>
<body>
   <h2>Using the <i> setDate() method and while loop </i> to get all dates between two dates in the array format. </h2>
   <div id="output"> </div>
   <button onclick="getArrayOfDates()"> Get array of Dates</button>
   <script>
      var output = document.getElementById('output');
      function getArrayOfDates() {
         let allDates = [];
         let startDate = prompt("Enter start date in the MM / DD / YYYY format", "09/23/2022");
         let endDate = prompt("Enter end date in the MM / DD / YYYY format ", "10/23/2022");
         
         // create a new date from the custom input
         let currentDate = moment.utc(new Date(startDate)).startOf("day"); 
         let lastDate = moment.utc(new Date(endDate)).startOf("day");
         
         // add one day to the current date and check the difference between the current date and the last date
         while (currentDate.add(1, "days").diff(lastDate) < 0) {
            allDates.push(currentDate.clone().toDate());
         }
         allDates.push(currentDate.clone().toDate());
         output.innerHTML += "The currentDate is " + currentDate + "<br/>";
         output.innerHTML += "The lastDate is " + lastDate + "<br/>";
         output.innerHTML += "The date array is <br/>";
         for (let i = 0; i < allDates.length; i++) {
            output.innerHTML += allDates[i] + " <br/>";
         }
      }
   </script>
</body>
</html>

Das obige ist der detaillierte Inhalt vonWie speichere ich alle zwischen zwei angegebenen Daten vorhandenen Daten in einem Array in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen