Designed by Derf !
95 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche

 NewsLetter






   

Traiter des dates en JavaScript

Tester comparer décomposer convertir les dates





AllJinx
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;
}



Pour pouvoir écrire dans ce forum, identifiez-vous !

  v1.3p © ASP-PHP.net 2002  

AllJinx le 09/10/2003 (45 234 hits)
Didier Téléchargez gratuitement et légalement des logiciels Microsoft ! Si, si ;)
  • Visual Studio 2010
  • Office 2010
  • Expression Studio 3
  • SQL Server 2008
  • et d'autres...
Au fil des news  
Magazines - Le N°128 de Programmez est disponible
Magazines - Le N°127 de Programmez est disponible
Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 6
Pour continuer dans le même style, je vous propose une suite au précédent article. Rechercher tous ...
Adobe - Adobe Photoshop.com Mobile pour iPhone 1.1
JavaScript - Ajouter une page dans vos favorites
Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 5 -
Je vous propose cette fois deux astuces. Comment exporter une feuille de style avec l'aide de ...
SharePoint Personalization Site Links - Les liens personnalisés des MySite SharePoint
Nous avons vu dans les articles précédents comment agrémenter les pages de recherche afin de ...
Magazines - Le n°126 de Programmez est disponible
Outils - Traducteur en ligne automatique pour site web
Adobe - Adobe Photoshop.com Mobile pour Iphone
Magazines - Le n°125 de Programmez est disponible
Adobe - Adobe AIR 2 et Flash Player 10.1version bêta
Les conférences autour des technologies Microsoft - Liste non exhaustive des grands évènements
Nous allons essayer de regrouper un grand nombre des évènements autour des technologies Microsoft ...
Magazines - Le n°124 de Programmez est disponible
PHP - Forum PHP 2009
Composants - eFace - XAML en Java
WPF - Désactiver le bouton de réduction d'une fenêtre
Magazines - Le n°123 de Programmez est disponible
Magazines - Le n°122 de Programmez est disponible
Auditer une ferme SharePoint - Assurer le bon fonctionnement de SharePoint
Dans le cadre de la bonne gestion de son environnement SharePoint, il est utile de faire un ...
SQL Server 2008 Report Builder 2.0 - Installation et utilisation de Report Builder 2.0
Dans le cadre de la création de rapports pour SQL Server Reporting Services 2008, un outil est ...
Magazines - Le HS N° 1 de Web Design est disponible
Adobe - Adobe propose en Open Source les frameworks.....
Outils - EntityBuilder
CSharp - Sérialisation XML de vos objets
Magazines - Le n°121 de Programmez est disponible
Adobe - Adobe annonce MAX 2009 !
Outils - WhoIs
[MAJ] Dreamweaver MX + Php + MySql - Les formulaires - partie 3
Mise à jour du code, par DB 77, affichage du code erreur, dans la page erreur.php, traduction des ...
PHP - News avec photo - Système de gestion - affichage
Gestion - Administration - Affichage d'une "News", "Actualité", "Info", ... avec : - mise en forme ...
Outils - Crypt
Dreamweaver Php Mysql - Région répétée imbriquée
Je rebondis, sur un post du forum, pour vous montrer comment obtenir grâce à l'extension Simulated ...
Magazines - Le n° 120 de Programmez est disponible
Gérer les bases de contenu SharePoint - Gérer la croissance du volume des données
Dans le cadre de la gestion quotidienne de ferme SharePoint, il existe une partie qu'il faut ...
PHP - Le Coach PHP sur Visual Studio
.NET - Ecrire une application .NET utilisant MySQL
PHP - Utilisation de PHP dans le monde Microsoft
Magazines - Le n° 119 de Programmez est disponible
Adobe - Adobe annonce Photoshop Marketplace
[MAJ] Tutoriel AJAX simple - En avant vers le WEB2.0
Mis à jour le 20/04/2009
Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
  Scripts : Scripting | ASP-PHP | ASP.net | Divers
  Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
v3b © Didier 2003   
 

Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
 DotNet Project ASP-magazine TechNet MVP Groupes Utilisateurs Microsoft