Jour d'une date
Résolu
Bonjour,
Cherchant à manipuler des dates, j'en suis venu à assigner à une date une valeur en milliseconde.
J'ai ainsi remarqué une incohérence que je n'explique pas, à partir de ce code :
Dans la console, le jour affiché est le 21.
Avec ce code, le jour affiché est bien le 3.
Pourquoi y a-t-il un décalage de 18 jours ?
Merci pour votre aide,
hcp7kuz
Cherchant à manipuler des dates, j'en suis venu à assigner à une date une valeur en milliseconde.
J'ai ainsi remarqué une incohérence que je n'explique pas, à partir de ce code :
var dateMilis = (2018 - 1970) * 31536000 + 02 * 2592000 + 3 * 86400 + 16 * 3600 + 51 * 60 + 3; var testDate = new Date(dateMilis * 1000); console.log(testDate.getDate());
Dans la console, le jour affiché est le 21.
var dateMilis = (2018 - 1970) * 31536000 + 02 * 2592000 + (3 - 18) * 86400 + 16 * 3600 + 51 * 60 + 3;
Avec ce code, le jour affiché est bien le 3.
Pourquoi y a-t-il un décalage de 18 jours ?
Merci pour votre aide,
hcp7kuz
1 réponse
-
ModérateurBonjour,
Sûrement à cause du -18 de ta seconde ligne...(3 - 18)* 86400
-
-
-
@jordane45Oui, et c'est justement ça le problème. J'aurais voulu avoir un calcul de la forme suivante pour obtenir un timestamp correspondant à la date correcte :
(année - 1970) * 31536000 + mois * 2592000 + jour * 86400 + heure * 3600 + minutes * 60 + secondes
-
ModérateurTu veux le "3" de quelle mois et de quelle année ??
Le 3 Février 2018 à 16h51 et 3sec ?
Il faut donc que ton calcul donne le timestamp
1517673063
Mais... tu as calculé comment les valeurs que tu multiplie aux années / mois .... ??
Sachant qu'il y a des mois à 28 , 30 et 31 jours ... et des années bissextiles ... -
@jordane45Voici mon calcul pour le timestamp :
(année - 1970) * 365 * 24 * 60 * 60 + mois * 30 * 24 * 60 * 60 + jour * 24 * 60 * 60 + heure * 60 * 60 + minutes * 60 + secondes
Est-ce incorrect ?
-