Existe-t-il une méthode intégrée pour convertir un date
à un datetime
en Python, par exemple pour obtenir le datetime
pour le minuit de la date donnée ? La conversion inverse est facile : datetime
a un .date()
méthode.
Dois-je vraiment appeler manuellement datetime(d.year, d.month, d.day)
?
196 votes
Ce n'est pas une question stupide ; les objets de date devraient avoir un
.datetime()
Ce qui est stupide, c'est qu'ils n'ont pas une telle méthode.22 votes
@Zags : ou
datetime.from_date()
constructeur.1 votes
@J.F.Sebastian : sauf qu'une telle méthode n'existe pas.
2 votes
@DavidNemeskey : lisez le commentaire de Zags auquel mon commentaire répond. Il s'agit de quelles méthodes devrait ont existé.
2 votes
@J.F.Sebastian : Je ne sais pas comment j'ai pu manquer ça... et je suis tout à fait d'accord.
11 votes
Non, la date est un sous-ensemble de datetime (c'est même dans le nom). La date est sans ambiguïté à partir d'un datetime. Mais dans l'autre sens, une date est un bloc de 24h (généralement), donc elle peut avoir plusieurs datetimes. Quelle date-heure serait issue d'une date ? On ne peut pas toujours dire 00:00 car que se passe-t-il si cette heure n'existe pas, comme par exemple si l'heure d'été l'a sautée. Pas si facile#
5 votes
@Dalore L'heure d'été se situe entre 1h et 2h du matin pour éviter exactement le problème que vous décrivez.
2 votes
@zags tout dépend du fuseau horaire d'origine et de destination, vous pouvez avoir un changement d'heure d'été à 1 heure du matin mais cela correspondrait à un changement à minuit dans un autre fuseau horaire. et si vous programmez, quel fuseau horaire utilisez-vous ? vous pourriez très bien essayer d'obtenir une heure qui n'existe pas. Mon point de vue est toujours le même, ajouter une heure à une date n'est pas simple. Ensuite, vous devez également considérer si votre nouvelle date est consciente du fuseau horaire ou si elle est naïve.