Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site
JavaScript est un langage orienté objet c'est à dire que ce langage dispose d'objets.
Un objet est une entité qui possède des propriétés et peut être manipulée avec des méthodes ; une méthode est une fonction spécifique à un objet. Un objet est obtenu grâce à un constructeur.
JavaScript est riche en objets prédéfinis (ou natifs) que je vais présenter dans ce chapitre.
On utilise le "constructeur" Date avec le mot réservé new pour créer une nouvelle "instance de
la "classe Date". On peut dire plus simplement "créer un objet de type date" Ou encore "créer une date & heure".
N'oubliez pas le "D" majuscule à "Date" pour bien préciser qu'il s'agit d'un constructeur.
Le constructeur Date() sans argument retourne l'instant présent.
Sinon il faut argumenter dans l'ordre : année, mois, jour, [heure, minute seconde]).
Les arguments entre crochets sont facultatifs.
Attention le rang du mois doit être un entier compris entre 0 et 11. Donc si le mois est "janvier" il faut saisir 0 et 11 pour "décembre !
L'argument de Date() peut être aussi un TimeStamp : nombre de millisecondes depuis le 1er janvier 1970 à 0 heure.
Le constructeur Date() produit toujours une date réaliste : voir rendu du script.
Pour la dernière date, il n'y a pas affichage du "30 février 2019" (date qui n'exite pas) mais du "2 mars 2019".
Testez dans la console cette série d'instructions JS :
J'ai oublié le mot clé "new" devant "Date()".
La variable "jour4" est considérée comme de type String et la dernière instruction "plante" .
Donc n'oubliez pas le mot clé "new" !
JavaScript propose une multitude de méthodes pour interroger une date.
Utilisons la console pour nous familiariser avec la syntaxe relative à cet objet ;
console utilisée le samedi 4 juin 2022.
Ici on n'a pas passé d'argument au "constructeur" Date donc la variable cejour récupère par défaut l'instant
présent (date et heure de l'appel sur le terminal de l'utilisateur).
Nous avons donc utilisé des méthodes "getter" c'est à dire des méthodes pour récupérer des infos sur une instance de l'objet Date.
Il existe aussi les méthodes "setter" . Vous avez entre autres : setFullYear(), setMonth(), setDate(), setHours(), etc.
Console du navigateur utilisée le dimanche 16 avril 2023 vers 22 heures :
Les méthodes toLocaleDateString() & toLocaleTimeString() sont particulièrment intéressantes pour afficher une date ou une heure dans un format compréhensibles pour un francophone.
Il serait préférable d'afficher le mois en toutes lettres et le nom du jour (dimanche, lundi, ...). C'est possible en combinant des méthodes "getter" avec des tableaux indicés.
Le rang du mois et le type de jour (sous forme d'indices) sont convertis en chaines grâce aux tableaux indicés.
Si "rang_mois" vaut 4 alors "nom_mois" retourne "mai".
Si "type_jour" vaut 0 alors "nom_jour" retourne "dimanche".
La nature du jour et le mois apparaissent sous forme textuelle grâce à l'emploi de tableaux indicés dans le code.
EMACScript propose désormais le constructeur Intl.DateTimeFormat pour formater proprement et rapidement des dates.
Donc le recours aux "array" comme ci-dessus devient inutile.
hour12 vaut false / true pour afficher l'heure sur 24 heures (ou 12 heures).
Les propriétés weekday, year, month, day, hour, minute, second peuvent avoir comme valeur : "numeric", "long", "short" ou "2-digit".
Constatez que l'instant présent apparait sous un format très clair pour un francophone.
Le mois et le type de jour apparaissent sous forme textuelle car j'ai utilisé la valeur "long" pour les propriétés month & weekday
var ladate = new Date(annee, mois+6,30, heure+1,0,0) ; : cette instruction construit une nouvelle date à partir de la date du jour ; 6 mois plus tard, le 30 du mois et une heure plus tard.
La différence entre deux instances de Date donne le nombre de millisecondes entre ces deux instants.
Je suis né le 19 février 1953 donc : new Date(1953,1,19) ; le mois de février à l'indice 1.
Pour calculer l'âge en années et mois, c'est un peu plus compliqué ...
Pour créer un objet String (une chaine) vous pouvez utiliser le constructeur String mais en général on préfère créer une variable de type string avec la syntaxe : let/const nomVariable ="suite de caractères alphanumériques"
Une chaine est délimitée obligatoirement par des guillemets simples ou doubles. Il faut utiliser le même délimiteur en début et fin de chaine.
Si la chaine contient une apostrophe il faut délimiter celle-ci par des guillemets doubles à moins d'échapper l'apostrophe.
Exemples de création de chaines :
let voyelles ='aeiouy'
let consonnes = "bcdfghjklmnpqrstvwxz"
let surnom = "l'emmerdeur"
let pseudo = 'l\'emmerdeur'
var message = new String("bonjour");
Tous les objets string ont été créés de façon littérale sauf le dernier (créé avec le constructeur String().
Dans un script il est possible d'écrire une chaine sur plusieurs lignes à condition qu'elle soit délimitée par des accents graves ("backquotes" en anglais).
Pour produire un "backquote" composez altgr + 7
Si la chaine multilignes contient un accent grave, il faudra 'échapper" celui-ci.
La méthode indexOf() possède un deuxième argument (facultatif) qui précise à partir de quelle position doit commencer la recherche de
la sous chaîne passée en premier argument.
Je vous rappelle que la méthode indexOf() retourne -1 si elle n'a pas trouvé la sous chaîne dans la chaîne.
Donc si la chaîne saisie comprend un arobase et un point après l'arobase alors les variables rang_arobase et rang_point
contiennent un entier supérieur à -1 (supérieur ou égal à zéro).
Le rendu :
Emploi des méthodes indexOf() & include().
La méthode includes() est une méthode récente et aussi générique car elle peut être aussi utilisée avec les tableaux.
Le script devient alors :
La méthode includes() retourne un booléen et admet en deuxième argument l'indice de départ.
Le rendu :
Vous pouvez aussi utiliser "l'artillerie lourde" : comparer la saisie à un objet de type RegExp.
Je n'en dis pas plus et vous renvoye au chapitre ad hoc.
Les expressions régulières ou objets de type RegExp