将datetime.date对象转换为datetime.datetime对象,其中包含任何缺少时间属性的零 [英] Convert a datetime.date object into a datetime.datetime object with zeros for any missing time attributes
问题描述
tdate = datetime.date(2012,1,31)
我想写一些类似这样的东西
tdatetime = datetime.date.datetime()
tdatetime = datetime.datetime(tdate)
而且我希望输出为
datetime.datetime(2012,1,31,0,0)
但两者都不起作用。 从datetime.datetime到datetime有一个内置函数。日期,但我正在寻找逆向操作。
一个非常糟糕的解决方案是写:
datetime.datetime(tdate.year(),tdate.month(),tdate.day(),0,0)
我特意想避免这种糟糕的做法。
我已经写了我自己的小功能来做到这一点,但我认为应该在模块中提供。它使一些系统范围的导入使我的功能混乱。它是可行的,只是不是非常Pythonic。
我只是要求看看有没有人知道是否有一个有效的方法来使用只使用datetime模块功能。
使用 .combine(date,time)
与一个空的 time
实例:
>>> import datetime
>>>> tdate = datetime.date(2012,1,31)
>>> datetime.datetime.combine(tdate,datetime.time())
datetime.datetime(2012,1,31,0,0)
如果您想使用常量,请使用 time.min
:
;>> datetime.datetime.combine(tdate,datetime.time.min)
datetime.datetime(2012,1,31,0,0)
Is there a built-in function that converts a datetime.date object into a datetime.datetime object with 0's for the missing stuff? For example, suppose
tdate = datetime.date(2012,1,31)
I want to write something like either of these
tdatetime = datetime.date.datetime()
tdatetime = datetime.datetime(tdate)
and I want the output to be
datetime.datetime(2012, 1, 31, 0, 0)
But neither works. There is a builtin function to go from datetime.datetime to datetime.date, but I'm looking for the reverse operation.
One very poor solution would be to write:
datetime.datetime(tdate.year(), tdate.month(), tdate.day(), 0, 0)
I specifically want to avoid this bad way of doing it.
I've already written my own small function to do this, but I think it should be provided in the module. It's cluttering up some system-wide imports to use my function. It's workable, just not very Pythonic.
I'm just asking to see if anyone knows whether there is an efficient way to do it using only datetime module functions.
Use .combine(date, time)
with an empty time
instance:
>>> import datetime
>>> tdate = datetime.date(2012,1,31)
>>> datetime.datetime.combine(tdate, datetime.time())
datetime.datetime(2012, 1, 31, 0, 0)
If you like to use a constant instead, use time.min
:
>>> datetime.datetime.combine(tdate, datetime.time.min)
datetime.datetime(2012, 1, 31, 0, 0)
这篇关于将datetime.date对象转换为datetime.datetime对象,其中包含任何缺少时间属性的零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!