Comment puis-je ajouter des secondes à un objet datetime.time en Python ?

Patricia Arquette
Libérer: 2024-11-04 03:07:29
original
669 Les gens l'ont consulté

How can I add seconds to a datetime.time object in Python?

Ajout de secondes à datetime.time en Python

Ajout d'un nombre entier de secondes à une valeur datetime.time en Python n'est pas immédiatement simple . Les tentatives d'ajout d'un timedelta ou d'un autre objet datetime.time entraînent des erreurs.

Approches naïves

Tentatives de base telles que :

<code class="python">datetime.time(11, 34, 59) + 3
datetime.time(11, 34, 59) + datetime.timedelta(0, 3)
datetime.time(11, 34, 59) + datetime.time(0, 0, 3)</code>
Copier après la connexion

toutes échouer avec des erreurs de type.

Conversion manuelle

Une solution consiste à convertir le datetime.time en secondes, à ajouter les secondes souhaitées, puis à reconstruire l'objet datetime.time :

<code class="python">def add_secs_to_time(timeval, secs_to_add):
    secs = timeval.hour * 3600 + timeval.minute * 60 + timeval.second
    secs += secs_to_add
    return datetime.time(secs // 3600, (secs % 3600) // 60, secs % 60)</code>
Copier après la connexion

Utiliser datetime.datetime

Une méthode plus pratique consiste à utiliser un objet datetime.datetime complet, en le définissant sur une date factice, puis en utilisant l'heure () pour récupérer uniquement la valeur temporelle. Par exemple :

<code class="python">a = datetime.datetime(100, 1, 1, 11, 34, 59)
b = a + datetime.timedelta(0, 3)
print(a.time())
print(b.time())</code>
Copier après la connexion

Résultats en :

11:34:59
11:35:02
Copier après la connexion

Vous pouvez également utiliser :

<code class="python">b = a + datetime.timedelta(seconds=3)</code>
Copier après la connexion

Fonction personnalisée

Si une fonction personnalisée est souhaitée, vous pouvez en définir une qui utilise la méthode addSecs :

<code class="python">import datetime

def addSecs(tm, secs):
    fulldate = datetime.datetime(100, 1, 1, tm.hour, tm.minute, tm.second)
    fulldate = fulldate + datetime.timedelta(seconds=secs)
    return fulldate.time()</code>
Copier après la connexion

Cette méthode accepte un objet datetime.time et un entier représentant le nombre de secondes à ajouter, renvoyant le heure modifiée.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!