Manipuler des dates

Objectif

  • Savoir calculer des dates et des durées

  • Savoir copier des dates

Mise en situation

Savoir lire et écrite des dates est utile, mais il faut aussi pouvoir les manipuler. Chaque type de variable a des opérations qui lui sont propres, il en va de même pour les dates. C'est tout l'intérêt d'utiliser les objets manipulant les dates intégrés à un langage : pouvoir facilement effectuer des opérations, telles que ajouter ou soustraire des dates, les comparer, ou encore calculer des durées entre elles. Nous allons voir ici comment réaliser ces opérations.

SyntaxeCopier une date

En Python, affecter une date existante à une variable permet de la copier.

En JavaScript, la fonction Date() peut prendre une date en paramètre pour copier sa valeur.

Exemple

1
"""Python."""
2
import datetime
3
day = datetime.datetime.now()
4
dayCopy = day
1
/** JavaScript: duplique une date */
2
const day = new Date()
3
const dayCopy = new Date(day)

Ajouter et soustraire

Il est possible de calculer une date à partir d'une autre, pour y ajouter ou soustraire des jours, des mois, des années, etc. En utilisant les attributs et replace() en Python, ou les fonctions getters et setters en JavaScript, on peut affecter les nouvelles valeurs calculées aux dates en question.

Exemple

La date est d'abord copiée. Le nouveau mois est calculé en soustrayant 1 à l'ancien, puis affecté à la date.

1
"""Python: retire un mois à la date actuelle."""
2
import datetime
3
4
day = datetime.datetime.now()
5
new_month = day.month-1
6
# Remplace par le mois soustrait
7
last_month = day.replace(month=new_month)
8
print(last_month)
1
/** JavaScript: retire un mois à la date actuelle */
2
const day = new Date()
3
let lastMonth = new Date(day)
4
const newMonth = lastMonth.getMonth() - 1
5
// Remplace par le mois soustrait
6
lastMonth.setMonth(newMonth)
7
console.log(lastMonth)

Calcul de durée

Pour calculer une durée entre deux dates, en jours, mois, années, etc., on peut par exemple soustraire les valeurs des dates.

ExempleNombre d'années entre deux dates

1
"""Python: affiche le nombre d'années de vie."""
2
import datetime
3
4
birth = datetime.datetime(1930, 8, 1)
5
death = datetime.datetime(2002, 1, 23)
6
7
lifetime = death.year - birth.year # calcule la différence entre les années
8
if death.month < birth.month: # retire un an si le dernier anniversaire n'est pas atteint
9
  lifetime -= 1
10
print('Pierre Bourdieu est mort à ', lifetime, ' ans')
1
/** JavaScript: affiche le nombre d'années de vie */
2
const birth = new Date(1930, 7, 1)
3
const death = new Date(2002, 0, 23)
4
5
let lifetime = death.getFullYear() - birth.getFullYear() // calcule la différence entre les années
6
if (death.getMonth() < birth.getMonth()) { // retire un an si le dernier anniversaire n'est pas atteint
7
  lifetime -= 1
8
}
9
console.log('Pierre Bourdieu est mort à ' + lifetime + ' ans')
10

À retenir

Les dates peuvent être manipulées de nombreuses manières, y compris sous leur forme entière, c'est à dire en millisecondes.