Jour d'une date

Résolu
hcp7kuz Messages postés 243 Date d'inscription   Statut Membre Dernière intervention   -  
hcp7kuz Messages postés 243 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

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

0
hcp7kuz Messages postés 243 Date d'inscription   Statut Membre Dernière intervention   23
 
Justement, j'ai ajouté dans le deuxième code le - 18 pour palier au problème. Sans celui-ci, le jour affiché est, avec cet exemple, 21.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Sachant que le timestamp que tu trouves avec ton calcul correspond au 21


(2018 - 1970) * 31536000 + 2 * 2592000 + 3 * 86400 + 16 * 3600 + 51 * 60 + 3 => 1519231863


Si on fait la conversion : timestamp à convertir : 1519231863
résultat : le 21/2/2018 à 17:51:03
0
hcp7kuz Messages postés 243 Date d'inscription   Statut Membre Dernière intervention   23 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
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
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 ...
0
hcp7kuz Messages postés 243 Date d'inscription   Statut Membre Dernière intervention   23 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
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 ?
0