Comment calculer le nombre de jours entre deux dates ?
P粉604848588
2023-08-23 16:51:49
<p>Par exemple, deux dates sont indiquées dans la zone de saisie : </p>
<pre class="brush:php;toolbar:false;"><input id="first" value="1/1/2000"/>
<ID d'entrée="seconde" valeur ="1/1/2001"/>
<script>
alert(datediff("jour", premier, deuxième)); // que se passe-t-il ici ?
</script></pre>
<p>Comment obtenir le nombre de jours entre deux dates en JavaScript ? </p>
Au moment d'écrire ces lignes, une seule des autres réponses gère correctement la conversion DST (Daylight Savings Time). Voici les résultats sur un système situé en Californie :
Bien que
Math.round
renvoie le résultat correct, je pense que c'est un peu maladroit. Au lieu de cela, en tenant compte explicitement du changement de décalage UTC lorsque l'heure d'été commence ou se termine, nous pouvons utiliser une arithmétique précise :Instructions
Les calculs de date JavaScript sont délicats car les objets
Date
stockent l'heure UTC en interne, pas l'heure locale. Par exemple, le 10/03/2013 à 00h00, heure standard du Pacifique (UTC-08:00) est stocké sous la forme 10/03/2013 à 8h00 UTC et 11/03/2013 à 00h00, heure avancée du Pacifique ( UTC-07 :00) stocké le 11/03/2013 à 7h00 UTC. Ce jour-là, l'heure locale de minuit à minuit n'a que 23 heures d'avance sur UTC !Alors qu'une journée en heure locale peut durer plus ou moins de 24 heures, une journée en UTC dure toujours exactement 24 heures. 1 Le
daysBetween
方法利用了这一点通过首先调用treatAsUTC
ci-dessus ajuste les deux heures locales à minuit UTC, puis effectue la soustraction et la division pour comprendre ce fait.1. JavaScript ignore les secondes intercalaires.
Voici une implémentation
datediff
rapide et sale de comme preuve de concept pour résoudre le problème posé dans la question. Cela repose sur le fait que vous pouvez obtenir le nombre de millisecondes écoulées entre deux dates en les soustrayant, ce qui les contraint à leurs valeurs numériques d'origine (nombre de millisecondes depuis début 1970).