Maison >développement back-end >Tutoriel Python >Comment puis-je déterminer avec précision si 24 heures se sont écoulées entre deux dates/heures en Python ?

Comment puis-je déterminer avec précision si 24 heures se sont écoulées entre deux dates/heures en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-03 02:35:14450parcourir

How Can I Accurately Determine if 24 Hours Have Passed Between Two Datetimes in Python?

Déterminer si 24 heures se sont écoulées entre les dates-heures à l'aide de Python

En Python, vous pouvez facilement déterminer le décalage horaire entre deux dates-heures à l'aide de la datetime module. Ceci est particulièrement utile dans les scénarios où vous devez vérifier si une période spécifique, telle que 24 heures, s'est écoulée.

Considérez la méthode suivante :

def time_diff(last_updated):
    day_period = last_updated.replace(day=last_updated.day + 1,
                                      hour=1,
                                      minute=0,
                                      second=0,
                                      microsecond=0)
    delta_time = day_period - last_updated
    hours = delta_time.seconds // 3600
    # Check if 24 hours have passed
    if hours >= 24:
        print("hello")
    else:
        print("do nothing")

Cette méthode calcule le décalage horaire entre l'heure actuelle et last_updated, un objet datetime donné. Si 24 heures se sont écoulées, il affiche « bonjour » ; sinon, il affiche « ne rien faire ».

Cependant, la méthode ne parvient pas à déterminer avec précision le décalage horaire de 24 heures. Voici des solutions plus précises :

Heure UTC

Si last_updated est un objet datetime naïf (sans informations de fuseau horaire) représentant l'heure UTC :

from datetime import datetime, timedelta

if (datetime.utcnow() - last_updated) > timedelta(hours=24):
    # More than 24 hours passed

Heure locale

Si last_updated est un objet datetime naïf (sans informations de fuseau horaire) représentant l'heure locale :

import time

DAY = 86400
now = time.time()
then = time.mktime(last_updated.timetuple())
if (now - then) > DAY:
    # More than 24 hours passed

Fuseau horaires et heures ambiguës

Si last_updated est une heure ambiguë (par exemple, lors d'une transition DST), vous peut utiliser le module pytz pour garantir l'exactitude :

from datetime import datetime, timedelta
from tzlocal import get_localzone # pip install tzlocal

tz = get_localzone()
then = tz.normalize(tz.localize(last_updated))
now = datetime.now(tz)
if (now - then) > timedelta(hours=24):
    # More than 24 hours passed

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn