Les dates avec java script

Fermé
Mimi - Modifié par Mimi le 28/05/2012 à 15:55
intassoura intissar Messages postés 2 Date d'inscription mardi 10 décembre 2013 Statut Membre Dernière intervention 19 novembre 2014 - 19 nov. 2014 à 15:13
Bonjour,

Voici ce code java script qui vérifie si la début >date_fin
Je veux transformer se code pour qu'il vérifie la date de cette forme 2012 /05/ 28 au lieu de cette forme 28 /05/2012

<head> 
<script type="text/javascript"> 
<!-- 
// Script proposé par Marcus Eric - V1 : 2005 
// V2 : 08/2006 

// Enleve le '0' des nb < 10 
function ConvNum(tabDeDate) { 
for (i=0; i<tabDeDate.length; i++) 
tabDeDate[i] = (tabDeDate[i].charAt(0)=='0')?tabDeDate[i].charAt(1):tabDeDate[i]; 
return tabDeDate; 
} 

// Retourne true si valeur_date est postérieure à la date du jour 
function DateFuture(valeur_date) 
{var tabDate = valeur_date.split('/'); 
var datAujourdhui = new Date(); 
tabDate = ConvNum(tabDate); 
if (valeur_date.length > 0) 
{ var datTest_Date = new Date(parseInt(tabDate[2]), parseInt(tabDate[1])-1, parseInt(tabDate[0])); 
if (datTest_Date <= datAujourdhui) return false; 
} 
return true; 
} 

// Retourne 1 si valeur_date1 < valeur_date2 
// 0 si valeur_date1 = valeur_date2 
// -1 si valeur_date1 > valeur_date2 
function Compare_Dates(valeur_date1, valeur_date2) 
{var tabDate1 = valeur_date1.split('/'); 
tabDate1 = ConvNum(tabDate1); 
var datTest_Date1 = new Date(parseInt(tabDate1[2]), parseInt(tabDate1[1])-1, parseInt(tabDate1[0])); 
var tabDate2 = valeur_date2.split('/'); 
tabDate2 = ConvNum(tabDate2); 
var datTest_Date2 = new Date(parseInt(tabDate2[2]), parseInt(tabDate2[1])-1, parseInt(tabDate2[0])); 
return (datTest_Date2-datTest_Date1==0)?"0":(datTest_Date2-datTest_Date1<0)?"-1":"1"; 
} 

// Vérifie le format d une date saisie 
function Verif_Date(valeur_date) 
{ var tabDate = valeur_date.split('/'); 
tabDate = ConvNum(tabDate); 
var datTest_Date = new Date(parseInt(tabDate[2]), parseInt(tabDate[1])-1, parseInt(tabDate[0])); 
if (valeur_date.length>10) 
{ alert('Ne dois pas dépasser 10 caractères.'); 
return false; 
} 
for (i=0; i<valeur_date.length; i++) 
{ if (valeur_date.charAt(i) == ' ') 
{ alert("La date ne doit pas contenir d\'espaces."); 
return false; 
} 
} 
if (valeur_date.length > 0) 
{ if ((parseInt(tabDate[0]) != datTest_Date.getDate()) || (parseInt(tabDate[1]) != parseInt(datTest_Date.getMonth())+1)) 
{ alert("Veuillez saisir la date au format 'J/M/SSAA' ou JJ/MM/SSAA.\n\nex : 6/6/2004 ou 06/06/2004"); 
return false; 
} 
if ((tabDate[2].length != 4) || (parseInt(tabDate[2]) < 1980) || (parseInt(tabDate[2]) > 2099)) 
{ alert("Veuillez saisir l'année sur 4 chiffres.\n\nElle doit être comprise entre 1980 et 2099."); 
return false; 
} 
} 
return true; 
} 

function ControleDates() { 
var strMsg=''; 
if (Verif_Date(document.getElementById('debut').value) && Verif_Date(document.getElementById('fin').value)) { 
switch (Compare_Dates(document.getElementById('debut').value, document.getElementById('fin').value)) { 
case "-1" : 
alert('KO:\nDate début > Date fin'); break; 
case "0" : 
alert('KO:\nDate début = Date fin'); break; 
case "1" : 
alert('OK:\nDate début < Date fin'); break; 
default : 
alert('Comparaison impossible');break; 
} 
} 
} 
//--> 
</script>

Merci D'avance de votre aide
A voir également:

3 réponses

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 28/05/2012 à 16:50
Salut Mimi,

Tu te compliques la vie.

Avec un format "2012/05/28" les chaînes de caractères composant ces dates peuvent être comparées par Javascript avec ses opérateurs standards (==, < ou >). La raison en est que le tri alphabétique de ces chaînes de caractères se trouve correspondre aussi à l'ordre chronologique.

Il suffit préalablement de vérifier que la saisie correspond à ce format et la comparaison est triviale.

Par exemple :

var date1 = "2012/05/28";  
var date2 = "2012/05/27";  

if ( date1.match(/^\d{4}\/\d{2}\/\d{2}$/) && date2.match(/^\d{4}\/\d{2}\/\d{2}$/) )   
{  
  if (date1 == date2) alert("les dates sont identiques")  
  else if (date1 < date2) alert("La première date est antérieure")  
  else if (date1 > date2) alert("La deuxième date est antérieure");  
} else  
{  
  alert("Erreur : les dates doivent être au format aaaa/mm/jj.");  
}

Dal
0
Salut,
Merci Dal ,j'avais un problème de connexion
0
DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 27
31 oct. 2012 à 13:29
petit code pour changer l'ordre
->Date = Date.substr(6,4)+'-'+Date.substr(3,2)+'-'+Date.substr(0,2);

avec un datepicker au format calendrier little endian, (jj/mm/aaaa) cela peut être utile plustôt que de forcer l'utilisateur à saisir la date dans un format inhabituel

le code ci-dessus te permet de retranscrire une date (jj/mm/aaaa) en (aaaa/mm/jj)
0
intassoura intissar Messages postés 2 Date d'inscription mardi 10 décembre 2013 Statut Membre Dernière intervention 19 novembre 2014
19 nov. 2014 à 15:13
bjr
plz tu me donne un petite code simple de vérifier que la date d'une demande est acceptée si la date de formulaire choisie est supérieur à date d'aujourd'hui . plz j'att une réponse merci
0