Existe-t-il une méthode intégrée pour convertir un date
en a datetime
en Python, par exemple en obtenant le datetime
pour minuit de la date donnée? La conversion opposée est facile: datetime
a une .date()
méthode.
Dois-je vraiment appeler manuellement datetime(d.year, d.month, d.day)
?
.datetime()
méthode; ce qui est stupide, c'est qu'ils n'ont pas une telle méthode.datetime.from_date()
constructeur.Réponses:
Vous pouvez utiliser
datetime.combine(date, time)
; pour le moment, vous créez undatetime.time
objet initialisé à minuit.la source
datetime.combine(d, time())
time.time
ou autre chose qu'un adatetime.time
.Il y a plusieurs façons, bien que je pense que celle que vous mentionnez (et que vous n'aimez pas) est la plus lisible.
et ainsi de suite - mais fondamentalement, ils reposent tous sur l'extraction appropriée des informations de l'
date
objet et leur réintroduction dans le ctor ou la fonction de classe appropriée pourdatetime
.la source
datetime(d.year, d.month, d.day)
semble beaucoup plus lisible que la réponse acceptéedatetime.combine(d, datetime.min.time())
.midnight = datetime.datetime.combine(d, datetime.time.min)
semble plus propre (suggéré par@
larham1 )datetime(d.year, d.month, d.day)
c'est plus évident (un datetime sans la composante time). C'est un point mineur, cependant, et l'utilisation d'un nom de variable comme "minuit" rend évident le résultat même si le lecteur ne sait pas ce que celadatetime.time.min
représente.datetime(d.year, d.mont, d.day)
n'est pas seulement plus évident, c'est aussi plus rapide .La réponse acceptée est correcte, mais je préférerais éviter d'utiliser
datetime.min.time()
car ce n'est pas évident pour moi exactement ce qu'elle fait. Si c'est évident pour vous, alors plus de pouvoir pour vous. Je ressens également la même chose à propos de latimetuple
méthode et de la confiance dans la commande.À mon avis, la façon la plus lisible et explicite de le faire sans compter sur le lecteur pour être très familier avec l'
datetime
API du module est:C'est mon point de vue sur "explicite vaut mieux qu'implicite".
la source
d2dt = lambda date: datetime(year=date.year, month=date.month, day=date.day)
fonction on-liner de cette réponse.datetime
être connaître le fuseau horaire. Dans ce cas, vous pouvezimport pytz
puis ajoutertzinfo=pytz.timezone('Europe/London')
, par exemple.Vous pouvez utiliser la
date.timetuple()
méthode et décompresser l'opérateur*
.la source
datetime.combine
via la réponse de @ kiamlaluno. Je pense que c'est assez pythonique, d'autant plus que la construction d'undatetime.time
objet est susceptible de ressembler à dedatetime.time(*map(int,"H:M:S".split(":")))
toute façon ...Aujourd'hui étant 2016, je pense que la solution la plus propre est fournie par pandas Timestamp:
L'horodatage est l'équivalent pandas du datetime et est interchangeable avec lui dans la plupart des cas. Vérifier:
Mais si vous voulez vraiment un datetime vanilla, vous pouvez toujours faire:
Les horodatages sont beaucoup plus puissants que les datetimes, entre autres lorsqu'ils traitent des fuseaux horaires. En fait, les horodatages sont si puissants qu'il est dommage qu'ils soient si mal documentés ...
la source
Une façon de convertir la date en datetime qui n'a pas encore été mentionnée:
la source
Vous pouvez utiliser easy_date pour simplifier:
la source
Si vous avez besoin de quelque chose de rapide,
datetime_object.date()
vous donne la date d'un objet datetime.la source
date
àdatetime
.datetime
a une.date()
méthode. , gras accent.Je suis un débutant en Python. Mais ce code a fonctionné pour moi qui convertit l'entrée spécifiée que je fournis en datetime. Voici le code. Corrige moi si je me trompe.
la source
datetime.date()
objet, pas une chaîne .