Formater une date

Les objets du noyau et les constructeurs

Le script ci-dessous écrit la date du jour dans le document.

<script type="text/javascript">
<!--

document.write(new Date()) ;

//-->
</script>

Nous connaissons déjà la méthode write() de l'objet document. Cette fois, nous lui envoyons comme argument l'expression new Date(). Dans cette expression, new est un opérateur et Date() est un constructeur d'objet. Il "construit" un objet de la classe Date ou, plus simplement un "objet Date" à partir de la date système, c'est-à-dire la date fournie par le système d'exploitation de l'ordinateur.

Le script peut s'écrire en deux lignes, en utilisant une variable à laquelle on affecte le résultat de l'opération.

<script type="text/javascript">
<!--


var d = new Date() ;
document.write(d) ;

//-->
</script>

Cette version du script fait clairement apparaître que d est une instance de l'objet Date. L'objet est une abstraction, une classe et l'instance est une réalisation concrète de la classe, tout comme Jolly Jumper est une instance de la classe des chevaux, ou vous-même êtes une instance de la classe des humains.

La première version du script ci-dessus crée également une instance de l'objet Date, mais la durée de vie de cette instance est éphémère, juste le temps de l'exécution de l'instruction.

L'objet Date ne fait pas partie du DOM. C'est logique, car il est indépendant de la fenêtre du navigateur. L'objet Date fait partie du noyau de JavaScript, ce que l'on appelle en anglais le core JavaScript.

Les objets du noyau s'écrivent avec une majuscule initiale.

Il est important de savoir reconnaître les objets du DOM et ceux du noyau, car ceux du noyau s'écrivent obligatoirement avec une majuscule initiale et ceux du DOM avec une minuscule.

 

Les méthodes de l'objet Date

Si vous avez essayé le bouton démo ci-dessus, vous avez remarqué que la date est correctement affichée dans la page mais que son format laisse quelque peu à désirer. Nous allons maintenant soigner la présentation de cette date en utilisant le format J/M/AAAA, c'est-à-dire le jour et le mois sur un chiffre et l'année sur 4 chiffres. Le format JJ/MM/AA donne le jour, le mois et l'année sur 2 chiffres, mais il est plus complexe à programmer.

Pour extraire de la date le jour, le mois et l'année, nous utilisons quelques méthodes de l'objet Date.

getDate() calcule le jour du mois,
getMonth() calcule l'indice du mois dans l'année (avec janvier=0),
getFullYear() calcule l'année sur 4 chiffres

Le fragment de script ci-dessous extrait ces informations et les stocke dans des variables.

var d = new Date() ;
var j = d.getDate() ;
var m = d.getMonth() ;
var a = d.getFullYear() ;

Il ne reste plus qu'à recomposer la date dans un autre format en écrivant ces informations l'une derrière l'autre tout en les séparant par des barres obliques. L'instruction ci-dessous se charge de l'opération.

document.write(j + "/" + m + "/" + a) ;

Le script complet s'écrit alors

<script type="text/javascript">
<!--

var d = new Date() ;
var j = d.getDate() ;
var m = d.getMonth() ;
var a = d.getFullYear() ;
document.write(j + "/" + (m+1) + "/" + a) ;


//-->
</script>

 

Chaînes de caractères et concaténation

 

L'opération par laquelle on a mis bout à bout les différentes informations s'appelle une concaténation (ce qui signifie littéralement "mettre ensemble des chaînes de caractères" du latin con, ensemble et catena, la chaîne).

Les constantes chaînes de caractères doivent être entourées de guillemets ou d'apostrophes selon que le texte à afficher contient déjà des apostrophes ou des guillemets.

document.write("C'est aujourd'hui") ;
document.write('Il a dit "Demain"') ;

Pour afficher une apostrophe ou un guillemet, on peut aussi utiliser une séquence d'échappement. Une séquence d'échappement est une barre oblique arrière (ang. backslash) suivie du caractère à échapper, soit apostrophe, guillemet ou barre arrière.

Exemples

document.write('Il a dit "C\'est aujourd\'hui"');
document.write("Il a dit \"C'est aujourd'hui\"");

L'opérateur de concaténation est le signe +, utilisé également pour l'addition. Javascript détermine le type d'une expression au moment de son évaluation.

"2" + "2" ==> 22 (concaténation)

2 + 2 ==> 4 (addition)

Formater la date de dernière modification

Nous avons vu que la propriété document.lastModified contient la date de dernière modification du document. Cependant, contrairement aux apparences, l'information contenue dans la propriété n'est pas un objet Date mais bien une simple chaîne de caractères. On peut vérifier le type d'une donnée au moyen de la fonction JavaScript typeof().

Convertir une chaîne en un objet Date

Il est possible de créer un objet Date à partir d'une chaîne de caractères en transmettant cette chaîne au constructeur. Tout le monde comprend qu'une chaîne ne peut être transformée en un objet Date que si elle représente bien une date. Mais il faut en plus que cette date soit au format américain M/J/AA

<script type="text/javascript">
<!--

d = new Date("2/29/2004") ;
document.write(d) ;

//-->
</script>

Il est donc possible de convertir la date de dernière modification en un objet Date au moyen du script ci-dessous.

<script type="text/JavaScript">
<!--

d = new Date(document.lastModified) ;
a = d.getFullYear() ;
m = d.getMonth() ;
j = d.getDate() ;

document.write("Dernière mise à jour : " + j + "/" + (1+m) + "/" + a) ;

//->
</script>

Valid XHTML 1.0!