Ich hatte vor kurzem die gleiche Frage, und da ich aus der Java-Welt komme, habe ich mich sofort auf die Suche nach einer JSR 310-Implementierung für JavaScript gemacht. JSR 310 ist eine Datums- und Zeit-API für Java (standardmäßig ausgeliefert ab Java 8). Ich denke, die API ist sehr gut konzipiert.
Glücklicherweise gibt es eine direkte Schnittstelle zu Javascript, die js-joda .
Fügen Sie zunächst js-joda in die Datei <head>
:
<script
src="https://cdnjs.cloudflare.com/ajax/libs/js-joda/1.11.0/js-joda.min.js"
integrity="sha512-piLlO+P2f15QHjUv0DEXBd4HvkL03Orhi30Ur5n1E4Gk2LE4BxiBAP/AD+dxhxpW66DiMY2wZqQWHAuS53RFDg=="
crossorigin="anonymous"></script>
Dann machen Sie einfach Folgendes:
let date1 = JSJoda.LocalDate.of(2020, 12, 1);
let date2 = JSJoda.LocalDate.of(2021, 1, 1);
let daysBetween = JSJoda.ChronoUnit.DAYS.between(date1, date2);
Jetzt daysBetween
enthält die Anzahl der Tage, die dazwischen liegen. Beachten Sie, dass das Enddatum exklusiv .
20 Stimmen
In 99 % der Fälle, in denen der Benutzer nach der "Anzahl der Tage zwischen zwei Daten" fragt, versteht er nicht, dass er versucht, Äpfel mit Birnen zu vergleichen. Das Problem wird so einfach, wenn man fragt: "Wie viele DATEN liegen in einem DATUMSBEREICH?", oder wie viele Quadrate ich auf dem Kalender ankreuzen muss. Die Verwirrung wird uns durch die datetime-Datenstruktur auferlegt, die reiner Unfug ist. Es gibt so etwas wie datetime nicht, es gibt Datum und es gibt Zeit, zwei sehr unterschiedliche Objekte sowohl in der Natur als auch im Verhalten.
0 Stimmen
Für eine Funktion, die die Differenz in (ganze) Zeiteinheiten aufteilt, verwenden Sie die Antwort unter stackoverflow.com/a/53092438/3787376 .
1 Stimmen
Meiner Meinung nach sollte diese Frage gestrichen oder zumindest mit "vermeiden" gekennzeichnet werden, da die meisten Antworten entweder falsch oder von verschiedenen Bibliotheken abhängig sind.
0 Stimmen
@RobG Bibliotheken sind die einzige Option, wenn JavaScript keine integrierte Möglichkeit bietet, es richtig zu machen.
3 Stimmen
@MCEmperor-hardly, der Meistgewählte Antwort besteht nur aus 3 Codezeilen, von denen zwei für das Parsing sind.
0 Stimmen
@RobG Nun, haben Sie den Rest der gleichen Antwort nicht gelesen? Der Poster nennt die Lösung "schnell und schmutzig". Und empfiehlt außerdem eine Datums- und Zeit-API. Während ich darüber sprach, es zu tun rechts . Und für mich hat die Anzahl der Codezeilen nichts damit zu tun, ob man es richtig macht.
0 Stimmen
@MC Emperor - Sie haben sich die Welten schnell und schmutzig angesehen und nicht wirklich geprüft, ob die Antwort richtig war. Es es Richtig, denn schließlich messen wir die Dauer/Intervalle und führen keine Datumsberechnung durch. Das Datum, das in unserem Kalender steht, sollte hingegen mit einer Bibliothek berechnet werden, da diese Dinge wie Schaltjahre und Anpassungen enthält.