Menu

Jour d'une date [Résolu]

hcp7kuz 218 Messages postés mardi 18 août 2015Date d'inscription 3 février 2018 Dernière intervention - 3 févr. 2018 à 17:14 - Dernière réponse : hcp7kuz 218 Messages postés mardi 18 août 2015Date d'inscription 3 février 2018 Dernière intervention
- 3 févr. 2018 à 20:28
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 :

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
Afficher la suite 

8 réponses

Répondre au sujet
jordane45 20071 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 février 2018 Dernière intervention - 3 févr. 2018 à 17:38
0
Utile
7
Bonjour,

Sûrement à cause du -18 de ta seconde ligne...
(3 - 18)* 86400

hcp7kuz 218 Messages postés mardi 18 août 2015Date d'inscription 3 février 2018 Dernière intervention > jordane45 20071 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 février 2018 Dernière intervention - 3 févr. 2018 à 18:37
Oui, 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
jordane45 20071 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 février 2018 Dernière intervention - 3 févr. 2018 à 19:00
Tu 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 ...
hcp7kuz 218 Messages postés mardi 18 août 2015Date d'inscription 3 février 2018 Dernière intervention > jordane45 20071 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 février 2018 Dernière intervention - 3 févr. 2018 à 19:22
Voici 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 ?
jordane45 20071 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 février 2018 Dernière intervention - 3 févr. 2018 à 19:39
Oui..vu ce que je t'ai indiqué avant
hcp7kuz 218 Messages postés mardi 18 août 2015Date d'inscription 3 février 2018 Dernière intervention > jordane45 20071 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 février 2018 Dernière intervention - 3 févr. 2018 à 20:28
D'accord, je n'avais pas pensé aux nombres de jours qui variait, merci pour ton aide, j'utiliserai une méthode plus "classique".
Commenter la réponse de jordane45