Convertir le nombre de jours restants en années, mois, jours [dupliquer]
J'essaie d'obtenir la différence entre deux dates (mon anniversaire et la date actuelle pour obtenir le temps restant jusqu'à mon anniversaire), mais je veux le format de sortie en ('Année / Mois / Jours); Comment puis je faire ça? c'est ce que j'ai essayé jusqu'à présent:
const birthday = new Date ('11-20-2021').getTime();
const today = new Date ().getTime();
const dys = (1000*60*60*24);
const months = (dys*30);
let differance = birthday-today ;
const formatted = Math.round(differance/dys);
console.log(formatted);`
Merci d'avance
Réponses
Que pensez-vous de l'opérateur modulo? :)
C'est une opération mathématique courante, comme trouver un changement ou autre. Pensez-y de cette façon, si vous avez un grand nombre de jours, disons 397, vous pouvez obtenir le nombre d'années en faisant la division entière (1), alors vous pouvez obtenir le nombre de jours restants en faisant modulo par an pour obtenir le reste (en jours) 397% 365 = 32. Ensuite, vous pouvez répéter le processus pour obtenir le nombre de mois restants (1 ... en supposant un mois de 30 jours) dans cela et encore, modulo pour obtenir le nombre final de jours 2 ...
Je ne suis pas un pro de javascript, mais je pense que vous devez utiliser Math.floor (quotient) pour obtenir le résultat de la division au format entier.
cet exemple compare entre la date actuelle et la date 2100/0/14 essayez le même concept dans l'exemple et j'espère que cela aide:
var today, someday, text;
today = new Date();
someday = new Date();
someday.setFullYear(2100, 0, 14);
if (someday > today) {
text = "Today is before January 14, 2100.";
} else {
text = "Today is after January 14, 2100.";
}
document.getElementById("demo").innerHTML = text;
Travailler avec des dates et des différences peut être difficile car il existe de nombreux cas extrêmes. c'est pourquoi je préfère laisser une bibliothèque dédiée gérer cela, commehttps://momentjs.com/
moment a un plugin (https://www.npmjs.com/package/moment-precise-range-plugin) qui fait exactement ce que vous recherchez:
import moment from 'moment';
import 'moment-precise-range-plugin';
var m1 = moment('2014-01-01 12:00:00','YYYY-MM-DD HH:mm:ss');
var m2 = moment('2014-02-03 15:04:05','YYYY-MM-DD HH:mm:ss');
var diff = moment.preciseDiff(m1, m2, true); // {years : 0, months : 1, days : 2, hours : 3, minutes : 4, seconds : 5}
var str = `Years: ${diff.years}, Months: ${diff.months}, Days: ${diff.days} `; // 'Years: 0, Months: 1, Days: 2'