| 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;
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
|
| auteur : siddh | Comparer deux dates |
d1 = new Date (0 );
d1. setFullYear (2006 , 11 , 27 )
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
|
| 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 ());
|
|
Attention, cette méthode dépend des paramètres linguistiques du système d'exploitation !
|
|
lien : Exemple d'utilisation de ce script
|
| 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
|
| 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 ' );
|
|
| 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.
|
|