Traiter des dates en JavaScript |
Tester comparer décomposer convertir les dates |
|
 |
Traiter les dates en JavaScript, il faut dire ce qui est, c'est la misère. Entre les mois qui sont indexés à partir de 0 et les mauvaises conversions de date francaise-anglaise, on est au bord de la crise de nerfs. Voici quelques fonctions utiles pour vous aider.
|
Traiter des dates en JavaScript
Raz-le-bol de se prendre la tête sur les dates pour trois fois rien. Aujourd'hui, j'ai regroupé quelques fonctions utiles dans une même feuille de script dont je vais partager la recette en espèrant ne pas avoir commis d'erreur.
Attention par contre, si vous voulez utiliser une de ces fonctions, pensez a récupérer aussi les fonctions qu'elles appellent !!!
// Jinxs JavaScript Document --- Date functions
function DecomposeDate(LeParam1){
// Sépare les jours, les mois et les années dans une date de type "22/05/1981" // Renvoye le tout dans un tableau de taille 3
LeRetour = new Array(3); LeJour=""; LeMois=""; LeAnnee="";
// Extraction du jour i=0; while((LeParam1.charAt(i)!="/")&&(i<10)){ LeJour+=LeParam1.charAt(i); i++; } if(LeJour.charAt(0)=="0"){ LeJour=LeJour.charAt(1); } LeParam1=LeParam1.substring(i+1,LeParam1.length);
// Extraction du mois i=0; while((LeParam1.charAt(i)!="/")&&(i<10)){ LeMois+=LeParam1.charAt(i); i++; } if(LeMois.charAt(0)=="0"){ LeMois=LeMois.charAt(1); } LeParam1=LeParam1.substring(i+1,LeParam1.length);
// Extraction de l'année LeAnnee=LeParam1; LeRetour[0]=LeJour; LeRetour[1]=LeMois; LeRetour[2]=LeAnnee; return LeRetour; }
// -------------------------------------------
function DateMachine(LeParam1){
// Renvoye une date sans les 0 dans les mois ou les jours "02/03/1981" -> "2/3/1981"
LaDate = new Array(3); LaDate = DecomposeDate(LeParam1); LeRetour = LaDate[0]+"/"+LaDate[1]+"/"+LaDate[2]; return LeRetour; }
// Renvoye une date en format anglais avec le séparateur choisi "02/03/1981" -> "1981-3-2" // Le premier paramètre est la date a convertir, le second est le caractère de séparation choisi function DateAnglaise(LeParam1,LeParam2){
LaDate = new Array(3); LaDate = DecomposeDate(LeParam1);
LeRetour = LaDate[2]+LeParam2+LaDate[1]+LeParam2+LaDate[0]; return LeRetour; }
// -------------------------------------------
function ComparerDates(LeParam1,LeParam2){
// Compare 2 dates au format jj/mm/aaaa // Renvoye 0 si égalité, 1 si la première est supérieure, sinon 2
var LeParam1 = DateAnglaise(LeParam1,"/");// Ne pas oublier d'utiliser cette fonction // pour convertir en date anglaise, sinon le 05/07/2003 sera compris "7 mai 2003" par JavaScript
var LeParam2 = DateAnglaise(LeParam2,"/"); LeParam1 = Date.parse(LeParam1); LeParam2 = Date.parse(LeParam2);
if (LeParam1 == LeParam2) { return 0; }
if (LeParam1 > LeParam2){ return 1; }else{ return 2; } }
// -------------------------------------------
function VerifierDates(LeParam1,LeParam2,LeParam3,LeParam4){
// Vérifie les dates de début et de fin des courses // Cette fonction est un exemple de script tests complets sur des dates // LeParam1 = date de début entrée par l'utilisateur // LeParam2 = date de fin entrée par l'utilisateur // LeParam3 = date de début minimale // LeParam4 = date de fin maximale
ErreurDate=0; var LaDateDebut = new Array(3); var LaDateFin = new Array(3);
LaDateDebut=DecomposeDate(LeParam1); LaDateFin=DecomposeDate(LeParam2);
// Vérification des dates if(isNaN(LaDateDebut[0])||isNaN(LaDateDebut[1])||isNaN(LaDateDebut[2])|| LaDateDebut[0]==""|| LaDateDebut[1]==""||LaDateDebut[2]==""){ window.alert("La date de début des courses est érronnée, veuillez la corriger."); ErreurDate=1; }
if(isNaN(LaDateFin[0])||isNaN(LaDateFin[1])||isNaN(LaDateFin[2])|| LaDateFin[0]==""||LaDateFin[1]==""||LaDateFin[2]==""){ window.alert("La date de fin des courses est érronnée, veuillez la corriger."); ErreurDate=1; }
LeParam1=DateMachine(LeParam1); LeParam2=DateMachine(LeParam2);
var LaDate=new Date;// Dans cette variable, nous allons attribuer notre date décomposée. // Ainsi, si la date que l'on attribue (comme le 30/02/2003), JavaScript la corriger à la date la plus proche
LaDate.setDate(LaDateDebut[0]); LaDate.setMonth(LaDateDebut[1]-1);// On enlève 1 car les mois sont indicés à partir de 0 en JavaScript LaDate.setYear(LaDateDebut[2]); if(LeParam1!=(LaDate.getDate()+"/"+(LaDate.getMonth()+1)+"/"+LaDate.getFullYear())){ // Ici nous comparons la date corrigée par JavaScript avec celle entrée par l'utilisateur. Si elles sont différente, // celà signifie que JavaScript à été obligé de la corriger car la date entrée par l'utilisateur n'existe pas.
// On préviens donc que la date est fausse. window.alert("La date de début des courses est érronnée, veuillez la corriger."); ErreurDate=1; }
var LaDate=new Date; LaDate.setDate(parseInt(LaDateFin[0])); LaDate.setMonth(parseInt(LaDateFin[1])-1); LaDate.setYear(parseInt(LaDateFin[2])); if(LeParam2!=(LaDate.getDate()+"/"+(LaDate.getMonth()+1)+"/"+LaDate.getFullYear())){ window.alert("La date de fin des courses est érronnée, veuillez la corriger."); ErreurDate=1; }
if(ErreurDate==0){ if(ComparerDates(LeParam1,LeParam3)==2){ window.alert("La date de début des courses est trop ancienne."); ErreurDate=1; } if(ComparerDates(LeParam2,LeParam4)==1){ window.alert("La date de fin des courses est trop récente."); ErreurDate=1; } }
return ErreurDate; }
|
AllJinx le
09/10/2003 (57 957 hits) |
|