Je veux calculer la différence de date en jours, heures, minutes, secondes, millisecondes, nanosecondes. Comment puis-je le faire?
javascript
datetime
Farhan Siddiqui
la source
la source
Réponses:
En supposant que vous ayez deux
Date
objets , vous pouvez simplement les soustraire pour obtenir la différence en millisecondes:À partir de là, vous pouvez utiliser une arithmétique simple pour dériver les autres valeurs.
la source
Math.floor((date2 - date1) / (1000*60*60*24))
- pour une différence dans une autre unité, ajustez le dénominateur (la valeur de base est en ms).Échantillon de code tiré d' ici .
la source
Une autre solution consiste à convertir la différence en un nouvel objet Date et à obtenir l'année de cette date (différente de 1970), le mois, le jour, etc.
Donc la différence est comme "3 ans et 6 mois et 4 jours". Si vous voulez faire la différence dans un style lisible par l'homme, cela peut vous aider.
la source
Les expressions telles que «différence de jours» ne sont jamais aussi simples qu'elles le paraissent. Si vous avez les dates suivantes:
la différence de temps est de 2 minutes, la «différence de jours» doit-elle être 1 ou 0? Des problèmes similaires se posent pour toute expression de la différence en mois, en années ou autre étant donné que les années, les mois et les jours ont des durées et des heures différentes (par exemple, le jour où l'heure d'été commence est 1 heure plus court que d'habitude et deux heures plus court que le jour ça se termine).
Voici une fonction pour une différence de jours qui ignore l'heure, c'est-à-dire que pour les dates ci-dessus, elle renvoie 1.
Cela peut être plus concis:
la source
la source
utilisez Moment.js pour tous vos calculs de date-heure liés à JavaScript
La réponse à votre question est:
Les détails complets peuvent être trouvés ici
la source
la source
Avec momentjs c'est simple:
la source
la source
Désolé mais le calcul de la milliseconde à plat n'est pas fiable Merci pour toutes les réponses, mais peu de fonctions que j'ai essayées échouent soit le 1. Une date proche de la date d'aujourd'hui 2. Une date en 1970 ou 3. Une date dans une année bissextile.
Approche qui a le mieux fonctionné pour moi et couvre tous les scénarios, par exemple, année bissextile, date proche en 1970, 29 février, etc.
la source
Si vous utilisez moment.js, il est assez simple de trouver une différence de date.
la source
la source
Je pense que cela devrait le faire.
la source
C'est ainsi que vous pouvez implémenter la différence entre les dates sans cadre.
la source
la source
Ok, il y a plusieurs façons de le faire. Oui, vous pouvez utiliser un ancien JS. Essayez simplement:
Émulons le passage en utilisant Date.prototype.setMinutes et assurez-vous que nous sommes à portée.
Vous pouvez également utiliser une bibliothèque comme js-joda , où vous pouvez facilement faire des choses comme celle-ci (directement à partir de la documentation):
Il y a beaucoup plus de bibliothèques ofc, mais js-joda a un avantage supplémentaire d'être disponible également en Java, où il a été largement testé. Tous ces tests ont été migrés vers js-joda, il est également immuable.
la source
cela devrait très bien fonctionner si vous avez juste besoin d'afficher le temps restant, car JavaScript utilise des images pour son heure, vous aurez votre heure de fin - The Time RN après cela, nous pouvons le diviser par 1000 car apparemment 1000 images = 1 seconde, après cela, vous pouvez utiliser les calculs de base du temps, mais il y a toujours un problème avec ce code, puisque le calcul est statique, il ne peut pas compenser le total de jours différent dans une année (360/365/366), le tas de SI après le calcul, il faut le rendre nul si le temps est inférieur à 0, j'espère que cela aide même si ce n'est pas exactement ce que vous demandez :)
la source