Lecture et formatage des dates

Objectifs

  • Savoir lire et afficher des dates ;

  • Connaître les fonctions principales de formatage.

Mise en situation

Vous le savez, les dates s'écrivent avec un format spécifique, qui varie selon la langue, les pays, ou les cultures. Ces formats d'écritures sont très utiles pour les humains, pour représenter et identifier les différents élément qui composent une date : l'année, le mois, le jour, l'heure, etc.

Les différents objets de date permettent, dans tous les langages, de retourner les dates manipulées en un format lisible pour les humains. À l'inverse, des fonctions peuvent lire la date saisie par un utilisateur, l'interpréter et construire un objet qui lui correspond.

SyntaxeGetters

Les getters sont des fonctions permettant de récupérer des informations, comme l'heure, le jour, le mois, etc.

  • En JavaScript, on utilise notamment : getFullYear(), getMonth(), getDate() qui renvoient respectivement l'année, le mois et le jour dans le mois. Attention, c'est bien getDate() qui renvoie le numéro du jour, et non getDay() qui renvoie le numéro du jour dans la semaine.

  • En Python, on a des attributs et non des fonctions : year, month, day qui renvoient respectivement l'année, le mois et le jour dans le mois.

Exemple

1
"""Python."""
2
import datetime
3
today = datetime.datetime.now()
4
print('Nous sommes le', today.month, 'ème mois de l\'année ')
1
/** JavaScript */
2
const today = new Date()
3
console.log('Nous sommes le ' + (today.getMonth() + 1) + ' ème mois de l\'année')

Attention

Étant donné que les mois utilisent un index en JavaScript, getMonth() retourne bien cet index en partant de 0, et non le numéro du mois comme on le compte.

SyntaxeSetters

Les setters permettent de modifier les attributs en prenant un paramètre (la nouvelle valeur) entre parenthèses.

  • En JavaScript, on retrouve les même méthodes sauf que « set » remplace « get » : setFullYear(), setMonth(), setDate(), etc., qui modifient respectivement l'année, le mois, le jour dans le mois, l'heure, les minutes, les secondes et les millisecondes.

  • En Python, il existe la fonction replace() qui peut prendre en paramètre year, month, day, etc.

Exemple

On remarquera qu'en Python, replace() renvoie une nouvelle date. Au contraire, en JavaScript, le setter modifie directement la date.

1
"""Python: récupère la date courante et remplace par le 1er jour du mois."""
2
import datetime
3
today = datetime.datetime.now()
4
first_day = today.replace(day=1)
5
6
print('Premier jour du mois en cours: ', first_day)
1
/** JavaScript: récupère la date courante et remplace par le 1er jour du mois */
2
const firstDay = new Date()
3
firstDay.setDate(1)
4
console.log('Premier jour du mois en cours: ' + firstDay)

ComplémentTime

Les getters et setters existent aussi pour les heures, minutes, secondes, etc.

Voir : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date pour le JavaScript et https://docs.python.org/3/library/datetime.html pour le Python.

SyntaxeFormatage

On fait varier le format d'une date en fonction de l'affichage des informations souhaités.

  • En Python ,strftime() permet de créer une « string from time ». Il existe de nombreux paramètres permettant de représenter les éléments de la date en version longue ou courte (%Y, %y, %m, etc.).

  • En JavaScript, on dispose de toLocaleString() qui prend en paramètre la langue (ou undefined) et un enregistrement qui indique pour chaque champ son format (long, short, 2-digit, etc.).

Exemple

1
"""Python."""
2
import datetime
3
today = datetime.datetime.now()
4
5
print(today) # AAAA-MM-JJ HH:mm:ss.ms
6
print(today.isoformat()) # AAAA-MM-JJTHH:mm:ss.ms
7
print(today.strftime("%m/%y/%d")) # MM/JJ/AA
8
print(today.strftime("%A %d. %B %Y")) # Jour JJ. Mois AAAA
1
/** JavaScript */
2
const today = new Date()
3
4
console.log(today) 
5
console.log(today.toISOString())
6
console.log(today.toLocaleString(undefined, {year:'numeric', month: 'numeric', day: 'numeric'}))
7
console.log(today.toLocaleString(undefined, {year:'numeric', month: 'long', day: 'numeric', weekday: 'short'})) 

RemarqueISO

Le format ISO est un format standardisé sous la forme YYYY-MM-DDTHH:mm:ss.sssZ. Le 1 janvier 2000, 12h00 devient 2000-01-01T12:00:00.000Z.

Les fonctions toISOString() en JavaScript et isoformat() en Python permettent de traduire une date dans ce format.

ComplémentDocumentation

Les formats des dates et les nombreuses utilisations existantes sont documentées en JavaScript et en Python.

À retenir

Une date créée peut être lue, modifiée et formatée grâce notamment aux getters et setters.