IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > La gestion des dates (l'objet Date)
        Comment afficher l'heure en temps réel ?
        Comment comparer deux dates ?
        Comment vérifier si un champ qui contient la date et l'heure au format(aaaa-mm-jj hh:mm:ss) est bien rempli ?
        Comment convertir une date JavaScript en français ?
        Comment déterminer si une année est bissextile ?
        Comment calculer le nombre de jours entre deux dates ?
        Comment déterminer la date d'il y a 6 mois ?



Comment afficher l'heure en temps réel ?
auteur : simone.51
Les timers JavaScript permettent d'exécuter des fonctions à des intervalles de temps donnés. Ainsi, pour notre horloge, nous allons utiliser setInterval qui se déclenchera toutes les 1000ms pour mettre à jour l'heure affichée sur l'horloge.

Voici la fonction pour afficher l'heure :
function runClock() {
  today   = new Date();
  hours   = today.getHours();
  minutes = today.getMinutes();
  seconds = today.getSeconds();
  timeValue = hours;

  // Les deux prochaines conditions ne servent que pour l'affichage.
  // Si le nombre de minute est inférieur à 10, alors on rajoute un 0 devant...

  timeValue += ((minutes < 10) ? ":0" : ":") + minutes;
  timeValue += ((seconds < 10) ? ":0" : ":") + seconds;
  document.getElementById("time").value = timeValue;
  timerRunning = true;
}
timerID = setInterval(runClock,1000);
Et voici le champ texte :
<input type="text" id="time" size="10" /> 
lien : Exemple d'utilisation de ce script

Comment comparer deux dates ?
auteur : siddh
Comparer deux dates

// Mise en place de la première date
d1 = new Date(0);
d1.setFullYear(2006, 11, 27)

// Mise en place de la seconde date
d2 = new Date(0);
d2.setFullYear(2006, 0, 18)

if(d1 > d2)
alert("d1 est après d2");
else if(d1 < d2)
alert("d1 est avant d2");
else
alert("d1 et d2 sont la même date");
Attention, les mois vont de 0 (janvier) à 11 (décembre).

lien : Exemple d'utilisation de ce script

Comment vérifier si un champ qui contient la date et l'heure au format(aaaa-mm-jj hh:mm:ss) est bien rempli ?
auteur : javaEli
function IsGoodDate(mydate){
    var mysplit=mydate.split(' ');
    if(mysplit.length!=2) return false;

    var thedate=mysplit[0].split('-');
    if((mysplit[0].length!=10)||
       (thedate.length!=3)||
       (isNaN(parseInt(thedate[0])))||
       (isNaN(parseInt(thedate[1])))||
       (isNaN(parseInt(thedate[2])))||
       (thedate[0].length<4)||
       (thedate[1].length<2)||
       (thedate[2].length<2)) return false;
    var an=eval(thedate[0]);
    var mo=eval(thedate[1]);
    var jo=eval(thedate[2]);
    var onedate=new Date(an,mo-1,jo);
    an=onedate.getYear();
    if(an.length<4) an=an+1900;
    if((onedate.getDate()!=jo)||
       (onedate.getMonth()!=mo-1)||
       (onedate.getYear()!=an)) return false;

    var thetime=mysplit[1].split(':');
    if((mysplit[1].length!=8)||
       (thetime.length!=3)||
       (isNaN(parseInt(thetime[0])))||
       (isNaN(parseInt(thetime[1])))||
       (isNaN(parseInt(thetime[2])))||
       (thetime[0].length<2)||
       (thetime[1].length<2)||
       (thetime[2].length<2)) return false;
    var he=eval(thetime[0]);
    var mi=eval(thetime[1]);
    var se=eval(thetime[2]);
    var onetime=new Date(an,mo-1,jo,he,mi,se);
    if((onetime.getHours()!=he)||
       (onetime.getMinutes()!=mi)||
       (onetime.getSeconds()!=se)) return false;

    return true;
}
Cette fonction teste d'abord si le paramètre "mydate" est bien composé des 2 éléments date et heure séparés par un espace. Ensuite, on teste si la date est bien composée des 3 éléments séparés par des tirets et si les longueurs de ces éléments sont bien 4, 2 et 2. Après ça, la fonction vérifie la validité de la date en la testant directement dans le calendrier (concordance)... Par exemple, 2004-02-31 retournera false car il n'existe pas de 31 février... Pour l'heure, c'est un peu pareil...


Comment convertir une date JavaScript en français ?
auteur : hotline
Lorsque l'on veut afficher une date en JavaScript, on est souvent confronté aux problèmes d'internationalisation. En effet, un code du type alert(new Date()) affiche un résultat de ce genre :

Fri Oct 09 2009 00:00:00 GMT+0200
Il s'agit certes de la bonne date, mais malheureusement pas au format que l'on a envie d'afficher !

Pour convertir cette date en format français, il suffit tout simplement d'utiliser la méthode toLocaleString() de l'objet Date() :

var ceJour = new Date();
alert(ceJour.toLocaleString());
warning Attention, cette méthode dépend des paramètres linguistiques du système d'exploitation !
lien : Exemple d'utilisation de ce script

Comment déterminer si une année est bissextile ?
auteurs : Bovino, SpaceFrog
Il existe des tests connus pour savoir si une année est bissextile ou non. Le problème qui se pose souvent vient de la gestion des années multiples de 10. Pour gérer ces cas, on en arrive rapidement à des algorithmes compliqués.

Encore une fois, en utilisant l'objet Date de JavaScript, la solution devient très simple.

var annee = prompt('Année ?')
alert(new Date(annee,2,0).getDate());
Ce code prend en compte que lorsqu'on définit une date incohérente, JavaScript se débrouille pour l'ajuster en une date existante.

Dans cet exemple, le 0e jour de mars deviendra donc le dernier jour de février, ce qu'affiche la boîte alert.

Il devient donc facile d'augmenter les prototypes des objets Number et Date :

Number.prototype.isBissextile=function(){
	return (new Date(this,2,0).getDate()>=29);
}
alert((2016).isBissextile());

Date.prototype.isBissextile=function(){
	return (new Date(this.getFullYear(),2,0).getDate()>=29);
}
var today = new Date();
today.setFullYear(2012);
alert(today.isBissextile());
lien : Discussion en rapport avec cette question

Comment calculer le nombre de jours entre deux dates ?
auteur : SpaceFrog
Si vous souhaitez calculer le nombre de jours séparant deux dates données, cette fonction fera votre bonheur :

function diffdate(d1,d2){
	var WNbJours = d2.getTime() - d1.getTime();
	return Math.ceil(WNbJours/(1000*60*60*24));
}
Explication : d1 et d2 étant deux dates, la méthode getTime() retourne le nombre de millisecondes écoulées depuis le 1er janvier 1970.
Il suffit donc de soustraire les deux valeurs et de convertir le nombre de millisecondes obtenues en jours (1000 => secondes, 60 => minutes, 60 => heures, 24 => jours).

Exemple d'utilisation de ce code :

var Date1 = new Date(2010,0,1);
var Date2 = new Date(2011,0,1);
 
alert(diffdate(Date1,Date2) + ' jours');
Vous pouvez bien sûr enrichir cette fonction en spécifiant le l'unité de temps à renvoyer :

function diffdate(d1,d2,u){
	var div=1;
	switch(u){
		case 's':
			div=1000;
			break;
		case 'm':
			div=1000*60;
			break;
		case 'h':
			div=1000*60*60;
			break;
		case 'd':
			div=1000*60*60*24;
			break;
	}
 			 
	var Diff = d2.getTime() - d1.getTime();
	return Math.ceil((Diff/div));
}
 
var Date1 = new Date(2010,0,1);
var Date2 = new Date(2011,0,1);
 
alert(diffdate(Date1,Date2,'d') + ' jours\n'+diffdate(Date1,Date2,'h')
								 + ' heures\n'+diffdate(Date1,Date2,'m') 
								 + ' minutes\n'+diffdate(Date1,Date2,'s') 
								 + ' secondes\n'+ diffdate(Date1,Date2,'') 
								 + ' millisecondes');

Comment déterminer la date d'il y a 6 mois ?
auteur : Bovino
Si vous avez besoin de récupérer la date d'il y a six mois, la solution simple qui vient en première intention est de retrancher les six mois à la date du jour :

var last6 = new Date();
last6.setMonth(today.getMonth()-6);
Bien que satisfaisante dans la plupart des cas, cette solution ne l'est plus pour les derniers jours du mois.
En effet, si l'on prend par exemple le 31 août, le code précédent affectera à la variable la date du 31 février et comme cette date n'existe pas, elle sera rectifiée par JavaScript en 2 ou 3 mars (selon que l'année est bissextile ou non), or, dans ce genre de cas, c'est bien le dernier jour de février que l'on cherche.
Il va donc falloir utiliser l'astuce suivante :

  • Nous allons fixer la date au jour 0 du 5e mois précédent, ce qui aura pour effet d'ajuster la date au dernier jour du mois -6 ;
  • Affecter le jour à la plus petite valeur entre la date du jour et le dernier jour d'il y a six mois en utilisant l'objet Math().

var today = new Date();
var last6 = new Date(today.getFullYear(),today.getMonth()-5,0);
last6.setDate(Math.min(today.getDate(),last6.getDate()));
lien : Discussion associée sur le forum


Consultez les autres F.A.Q.


Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2004 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.