Steveha a déjà dit qu'il faut tronquer. Cela vous arrondira à la baisse. Mais si vous voulez arrondir au chiffre le plus proche, la manière d'arrondir les nombres en général est d'ajouter 5 à l'endroit des décimales que vous couperiez, avant de procéder à la troncature. Par exemple, pour arrondir 12,3456 à 3 décimales, ajoutez 0,0005; cela vous donne 12,3461 que vous tronquez ensuite à 3 caractères après le point, vous donnant ainsi 12,346.
La question est, comment ajouter 5 au prochain endroit des décimales - correctement. Ainsi, vous ne pouvez pas simplement considérer les microsecondes, si vous arrondissez .9995 secondes alors qu'il est juste avant minuit du réveillon du Nouvel An, la retenue pourrait remonter jusqu'à l'année!
Mais vous pouvez utiliser un timedelta. Ensuite, le calcul du temps est correct et vous pouvez simplement tronquer pour obtenir votre valeur correctement arrondie.
Pour arrondir à 3 décimales en secondes, vous voulez ajouter 0,0005 secondes = 500 microsecondes. Voici 3 exemples: tout d'abord, arrondir 0,1234 secondes à 0,123, puis arrondir 0,1235 secondes à 0,124, puis la retenue se propage tout le chemin lorsque vous devriez embrasser quelqu'un pour lui souhaiter une bonne année et au lieu de cela vous faites du Python:
>>> r = datetime.timedelta(microseconds=500)
>>> t = datetime.datetime(2023,1,2,3,45,6,123456)
>>> (t+r).strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
'2023-01-02 03:45:06.123'
>>> t = datetime.datetime(2023,1,2,3,45,6,123556)
>>> (t+r).strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
'2023-01-02 03:45:06.124'
>>> t = datetime.datetime(2023,12,31,23,59,59,999500)
>>> (t+r).strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
'2024-01-01 00:00:00.000'