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
Libérer: 2024-12-03 02:35:14
original
509 Les gens l'ont consulté

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")
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal