Maison > Article > développement back-end > Comment ajouter des secondes à un objet datetime.time en Python ?
Ajout de secondes à datetime.time en Python
Les développeurs rencontrent souvent le besoin de manipuler les valeurs temporelles en Python. Parmi les différents composants datetime, datetime.time représente une heure de la journée sans composant date. Pour ajouter un nombre entier de secondes à un objet datetime.time, nous avons besoin d'une méthode standard et efficace.
Approches conventionnelles
Tentative d'ajouter directement un nombre entier à un La valeur datetime.time ou l’utilisation d’un timedelta avec un objet time entraîne des erreurs de type. Des fonctions personnalisées telles que add_secs_to_time() ont été développées pour résoudre ce problème.
Solution efficace
Cependant, une solution plus élégante et pythonique existe. En convertissant l'objet datetime.time en une instance datetime complète avec une date factice, nous pouvons exploiter le timedelta pour ajouter des secondes. Par exemple :
<code class="python">import datetime timeval = datetime.time(11, 34, 59) secs_to_add = 3 dt = datetime.datetime(100, 1, 1, timeval.hour, timeval.minute, timeval.second) # Dummy date dt += datetime.timedelta(seconds=secs_to_add) result_time = dt.time()</code>
Cette approche produit le résultat attendu : 11:35:02. Il conserve les informations temporelles d'origine tout en incrémentant les secondes avec précision.
Fonction d'assistance
Pour plus de commodité, nous pouvons créer une fonction réutilisable appelée addSecs :
<code class="python">def addSecs(tm, secs): fulldate = datetime.datetime(100, 1, 1, tm.hour, tm.minute, tm.second) fulldate += datetime.timedelta(seconds=secs) return fulldate.time()</code>
En utilisant cette fonction, nous pouvons manipuler facilement les valeurs datetime.time :
<code class="python">a = datetime.datetime.now().time() b = addSecs(a, 300)</code>
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!