padam90
Messages postés6Date d'inscriptionvendredi 10 juin 2005StatutMembreDernière intervention11 juin 2005
-
10 juin 2005 à 19:50
Mike SN53477
Messages postés26Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention27 août 2005
-
11 juin 2005 à 20:18
Bonjour,
j'utilise une fonction Javascript pour formater une date et la
modifier. Or les fonctions de date ne me renvoient pas la valeur voulue
!
la valeur de la date en entree est de type : 20050531000000000,
représentant yyyyMMddhhmmss... les trois derniers carateres etant les
millisecondes. Lorsque la date correspond au 31 de n'importe quel mois,
le formatage ne fonctionnepas correctement.
voici un extrait du code Javascript utilisé :
var date = document.forms[0].elements["valeurDate"];
var inputDate = date.value;
var inputDateForm = new Date();
inputDateForm.setDate(inputDate.substring(6,8));
inputDateForm.setMonth(inputDate.substring(4,6)-1); /* range = 0 - 11 */
inputDateForm.setYear(inputDate.substring(0,4));
inputDateForm.setHours(00);
inputDateForm.setMinutes(00);
inputDateForm.setSeconds(00);
alert(inputDateForm.getDate());
Lorsqu'apparait a l'ecran la valeur de
inputDateForm.getDate()
si la valeur de depart etait un jour = à 31, la valeur stockée est de 1 au lieu de 31 !
pourtant cette fonction est sensée fonctionner de 1 à 31...
et si je teste et entre une valeur de jour = à 00 ou 0, là la date sera fixée à 31.
ou bien tu fait directement en une seule ligne:
var inputDateForm = new Date(inputDate.substring(0,4), inputDate.substring(4,6)-1, inputDate.substring(6,8));
Mike SN53477
Messages postés26Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention27 août 2005 11 juin 2005 à 00:29
En fait ce qui nous embête dans le programme ce sont les zéros qui précédent les mois et les jours (dans ce cas-ci 05). Je ne sais pas s'il existe une instruction en JavaScript qui convertit un string en entier.
Sinon in faut revoir tout ton code de a à z.
Vous n’avez pas trouvé la réponse que vous recherchez ?
padam90
Messages postés6Date d'inscriptionvendredi 10 juin 2005StatutMembreDernière intervention11 juin 2005 11 juin 2005 à 10:53
non, les mois ne posent aucun problème : j'ai testé le code avec des
"alert" pour voir ce qui était récupéré, et ensuite ce qui était inséré
dans ma date.
Ce sont les jours qui sont mal pris en compte !
de 1 à 30 ils sont corrects mais pour 31 cela ne fonctionne pas ! par contre si on remplace 31 par 0, cela fonctionne !
Mike SN53477
Messages postés26Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention27 août 2005 11 juin 2005 à 12:39
Je vais t'expliquer ce qui n'allait pas.
Supposons que nous sommes le 11 juin 2005.
En fait quand tu fait: var inputDateForm = new Date();
-- > Year=2005, Month=5=Juin, Date=11 /* range = 0 - 11 */
Ensuite tu fait: inputDateForm.setDate(inputDate.substring(6,8));
Dans l'exemple que tu donnes 20050531000000000
Year=2005, Month=5-1=Mai, Date=31 /* range = 0 - 11 */
--> le 31 Mai n'existe pas --> la valeur 1 est stockée par défaut!
padam90
Messages postés6Date d'inscriptionvendredi 10 juin 2005StatutMembreDernière intervention11 juin 2005 11 juin 2005 à 19:05
En fait ce que je ne comprends pas c'est pourquoi la fonction Javascript ne renvoie pas les bonnes valeurs :
je m'explique :
quand je fais un inputDateForm.setDate("1"),
si j'affiche inputDateForm.getDate(), j'obtiens 1.
si je fais inputDateForm.setDate("12") (ou n'importe quelle valeur entre 1 et 30)
il renvoie 12 (ou la valeur passee entre 1 et 30)
Mais si je fais inputDateForm.setDate("31"),
il renvoie 1 !!!
et si je fais inputDateForm.setDate("0"=, ou inputDateForm.setDate("00"),
il renvoie 31 !!!!
on dirait que la fonction "marche" pour des valeurs entre 1 et 30, et
qu'il faut utiliser 0 au lieu de 31 pour obtenir le 31 du mois (si ce
mois possede bien 31 jours !)
Mike SN53477
Messages postés26Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention27 août 2005 11 juin 2005 à 20:16
J'ai essayé sur mon PC.
Ca marche comme sur des roulettes!
Fait copier/coller pour tester le code ci dessous:
n'oublies pas les dates PHP et JavaScript (1-12 et 0->11)
<html>
<head>
<title>TEST</title>
</head>
<script language="javascript">
var inputDate = "20050531000000000";
var inputDateForm = new Date(inputDate.substring(0,4), inputDate.substring(4,6)-1, inputDate.substring(6,8));
alert(inputDateForm.getDate());
</script>