10 choses surprenantes que vous pouvez faire avec le module DateTime de Python


Image de l’auteur | Chatte
Introduction
Python intégré datetime
Le module peut facilement être considéré comme la bibliothèque incontournable pour le traitement de la date et du formatage de la date et du temps dans l’écosystème. La plupart des codeurs Python connaissent la création datetime
objets, les formatant en chaînes et effectuant une arithmétique de base. Cependant, ce module puissant, parfois aux côtés de bibliothèques connexes telles que calendar
offre une tonne de fonctionnalités supplémentaires au-delà des bases qui peuvent résoudre des problèmes complexes de date et de temps avec une facilité surprenante.
Cet article examine 10 choses utiles – et peut-être surprenantes – que vous pouvez accomplir avec Python datetime
module. De la navigation des fuseaux horaires au calcul des occurrences spécifiques en semaine, ces exemples démontreront la polyvalence de la boîte à outils de date et d’heure de Python.
1. Trouver le jour de la semaine
Au-delà de la simple connaissance de la date, vous devez souvent connaître le jour de la semaine. Le datetime
Le module rend ce trivial. Chaque datetime
L’objet a un weekday()
Méthode, qui revient le jour de la semaine en tant qu’ender (le lundi est 0, le dimanche est 6), et un strftime()
Méthode, qui peut formater la date pour afficher le nom de la journée.
import datetime
# Pick a date
today = datetime.date(2025, 7, 10)
# Get the day of the week (Monday is 0)
day_of_week_num = today.weekday()
print(f"Day of the week (numeric): {day_of_week_num}")
# Get the full name of the day
day_name = some_date.strftime("%A")
print(f"The date {today} is a {day_name}")
Sortir:
The date 2025-07-10 is a Thursday
2. Calcul de l’heure jusqu’à un futur événement
Avez-vous déjà eu besoin d’un simple compte à rebours? Avec datetime
vous pouvez facilement calculer l’heure restante jusqu’à une date et une heure futures spécifiques. En soustrayant le courant datetime
D’un futur, vous obtenez un timedelta
objet qui représente la différence.
import datetime
# Define a future event
new_year_2050 = datetime.datetime(2050, 1, 1, 0, 0, 0)
# Get the current time
now = datetime.datetime.now()
# Calculate the difference
time_left = new_year_2050 - now
print(f"Time left until New Year 2050: {time_left}")
Sortir:
Time left until New Year 2050: 8940 days, 16:05:52.120836
3. Travailler avec les fuseaux horaires
La gestion des fuseaux horaires est délicat. UN naïf datetime
L’objet n’a pas de données de fuseau horaire, tandis qu’un conscient L’objet possède ces données. En utilisant le pytz
bibliothèque (ou la zoneinfo
Dans Python 3.9+) rend le travail avec les fuseaux horaires gérables.
Par exemple, vous pouvez utiliser un temps de fuseau horaire comme base pour la conversion à un autre fuseau horaire comme ceci:
import datetime
from pytz import timezone
# Create a timezone-aware datetime for New York
nyc_tz = timezone('America/New_York')
nyc_time = datetime.datetime.now(nyc_tz)
print(f"New York Time: {nyc_time}")
# Convert it to another timezone
london_tz = timezone('Europe/London')
london_time = nyc_time.astimezone(london_tz)
print(f"London Time: {london_time}")
Sortir:
New York Time: 2025-07-10 07:57:53.900220-04:00
London Time: 2025-07-10 12:57:53.900220+01:00
4. Obtenir le dernier jour d’un mois
Découvrir le dernier jour d’un mois n’est pas simple car les mois ont un nombre de jours différents. Vous pouvez écrire une logique pour gérer 30/31 jours avec février (n’oubliez pas les années de saut!), Ou vous pouvez utiliser une astuce intelligente avec datetime
et timedelta
. La stratégie consiste à trouver le premier jour du suivant mois, puis soustrayez un jour.
import datetime
def get_last_day_of_month(year, month):
# Handle month rollover for December -> January
if month == 12:
next_month_first_day = datetime.date(year + 1, 1, 1)
else:
next_month_first_day = datetime.date(year, month + 1, 1)
# Subtract one day to get the last day of the current month
return next_month_first_day - datetime.timedelta(days=1)
# Example: Get the last day of February 2024 (a leap year)
last_day = get_last_day_of_month(2024, 2)
print(f"The last day of February 2024 is: {last_day}")
Sortir:
The last day of February 2024 is: 2024-02-29
5. Calcul de votre âge précis
Vous pouvez utiliser datetime
Pour calculer l’âge de quelqu’un jusqu’à la journée. La logique consiste à soustraire la date de naissance de la date actuelle, puis à effectuer un petit ajustement pour expliquer si l’anniversaire de la personne s’est encore produit cette année.
import datetime
def calculate_age(birthdate):
today = datetime.date.today()
age = today.year - birthdate.year - ((today.month, today.day) < (birthdate.month, birthdate.day))
return age
# Example usage
picasso_birthdate = datetime.date(1881, 10, 25)
picasso_age = calculate_age(picasso_birthdate)
print(f"If alive today, Pablo Picasso would be {picasso_age} years old.")
Sortir:
If alive today, Pablo Picasso would be 143 years old.
6. itérer à travers une gamme de dates
Parfois, vous devez effectuer une opération pour chaque jour dans une plage de dates spécifique. Vous pouvez facilement parcourir les dates en commençant par un objet de date et en ajoutant à plusieurs reprises un timedelta
d’un jour jusqu’à ce que vous atteigniez la date de fin.
import datetime
start_date = datetime.date(2025, 1, 1)
end_date = datetime.date(2025, 1, 7)
day_delta = datetime.timedelta(days=1)
current_date = start_date
while current_date <= end_date:
print(current_date.strftime('%Y-%m-%d, %A'))
current_date += day_delta
Sortir:
2025-01-01, Wednesday
2025-01-02, Thursday
2025-01-03, Friday
2025-01-04, Saturday
2025-01-05, Sunday
2025-01-06, Monday
2025-01-07, Tuesday
7. Analyse des dates des formats de chaîne non standard
Le strptime()
La fonction est utile pour convertir les chaînes en datetime
objets. Il est incroyablement flexible et peut gérer une grande variété de formats en utilisant des codes de format spécifiques. Ceci est essentiel pour traiter les données de différentes sources qui peuvent ne pas utiliser un format ISO standard.
import datetime
date_string_1 = "July 4, 1776"
date_string_2 = "1867-07-01 14:30:00"
# Parse the first string format
dt_object_1 = datetime.datetime.strptime(date_string_1, "%B %d, %Y")
print(f"Parsed object 1: {dt_object_1}")
# Parse the second string format
dt_object_2 = datetime.datetime.strptime(date_string_2, "%Y-%m-%d %H:%M:%S")
print(f"Parsed object 2: {dt_object_2}")
Sortir:
Parsed object 1: 1776-07-04 00:00:00
Parsed object 2: 1867-07-01 14:30:00
8. Trouver le nième jour de la semaine d’un mois
Voulez-vous connaître la date du troisième jeudi de novembre? Le calendar
le module peut être utilisé à côté datetime
pour résoudre ceci. Le monthcalendar()
La fonction renvoie une matrice représentant les semaines d’un mois, que vous pouvez ensuite analyser.
import calendar
# calendar.weekday() Monday is 0 and Sunday is 6
# calendar.Thursday is 3
cal = calendar.Calendar()
# Get a matrix of weeks for November 2025
month_matrix = cal.monthdatescalendar(2025, 11)
# Find the third Thursday
third_thursday = (week(calendar.THURSDAY) for week in month_matrix if week(calendar.THURSDAY).month == 11)(2)
print(f"The third Thursday of Nov 2025 is: {third_thursday}")
Sortir:
The third Thursday of Nov 2025 is: 2025-11-20
9. Obtenir le numéro de la semaine ISO
Le ISO 8601 Standard définit un système de numéro de semaine où une semaine commence un lundi. Le isocalendar()
La méthode renvoie un tuple contenant l’année ISO, le numéro de la semaine et le jour de la semaine pour une date donnée.
Notez que la date ci-dessous est un jeudi, et devrait donc entraîner un jour de la semaine de 4. Il devrait également s’agir de la 28e semaine de l’année.
import datetime
d = datetime.date(2025, 7, 10)
iso_cal = d.isocalendar()
print(f"Date: {d}")
print(f"ISO Year: {iso_cal(0)}")
print(f"ISO Week Number: {iso_cal(1)}")
print(f"ISO Weekday: {iso_cal(2)}")
Sortir:
Date: 2025-07-10
ISO Year: 2025
ISO Week Number: 28
ISO Weekday: 4
10. Additionner ou soustraire les jours ouvrables
Le calcul des dates futures tout en sautant les week-ends est une exigence commerciale courante. Alors que datetime
N’a pas de fonction intégrée pour cela, vous pouvez écrire une fonction d’assistance simple en utilisant timedelta
et le weekday()
méthode.
import datetime
def add_business_days(start_date, num_days):
current_date = start_date
while num_days > 0:
current_date += datetime.timedelta(days=1)
# weekday() returns 5 for Saturday and 6 for Sunday
if current_date.weekday() < 5:
num_days -= 1
return current_date
start = datetime.date(2025, 7, 10) # A Thursday
end = add_business_days(start, 13)
print(f"13 business days after {start} is {end}")
13 business days after 2025-07-10 is 2025-07-29
Emballage
Python datetime
Le module est plus qu’un simple outil simple pour stocker les dates. Il fournit un ensemble d’outils flexible et utile pour gérer presque toutes les logiques liées au temps imaginables. En comprenant ses composants principaux – date
, time
, datetime
et timedelta
– et les combinant avec le calendar
module ou bibliothèques externes comme pytz
vous pouvez résoudre des problèmes complexes du monde réel efficacement et avec précision.
N’oubliez pas de vérifier le datetime
module documentation pour plus. Vous pourriez être surpris de ce que vous pouvez accomplir.
Matthew Mayo (@ Mattmayo13) est titulaire d’une maîtrise en informatique et d’un diplôme d’études supérieures en exploration de données. En tant que rédacteur en chef de Kdnuggets & Statologieet rédacteur en chef à Maîtrise de l’apprentissage automatiqueMatthew vise à rendre les concepts de science des données complexes accessibles. Ses intérêts professionnels incluent le traitement du langage naturel, les modèles de langue, les algorithmes d’apprentissage automatique et l’exploration de l’IA émergente. Il est motivé par une mission pour démocratiser les connaissances dans la communauté des sciences des données. Matthew est codant depuis l’âge de 6 ans.