103 votes

Convertir une chaîne en objet datetime.time

Compte tenu de la string dans ce format "HH:MM" par exemple "03:55" qui représente 3 heures et 55 minutes .

Je veux le convertir en datetime.time pour une manipulation plus facile. Quel serait le moyen le plus simple de le faire ?

161voto

Martijn Pieters Points 271458

Utilisez datetime.datetime.strptime() et appeler .time() sur le résultat :

>>> datetime.datetime.strptime('03:55', '%H:%M').time()
datetime.time(3, 55)

Le premier argument de .strptime() est la chaîne à analyser, la seconde est le format attendu.

20voto

Andreas Jung Points 1
>>> datetime.time(*map(int, '03:55'.split(':')))
datetime.time(3, 55)

2voto

Gil Ben-Herut Points 11

C'est peut-être moins clair pour les futurs lecteurs, mais la *map est plus de 10 fois plus rapide. Voyez ci-dessous et prenez une décision éclairée dans votre code. Si vous appelez ce contrôle plusieurs fois et que la vitesse est importante, choisissez le générateur ("map").

In [31]: timeit(datetime.strptime('15:00', '%H:%M').time())
7.76 µs ± 111 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [28]: timeit(dtime(*map(int, SHUTDOWN_AT.split(':'))))
696 ns ± 11.5 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X