将datetime.date对象转换为datetime.datetime对象,其中包含任何缺少时间属性的零 [英] Convert a datetime.date object into a datetime.datetime object with zeros for any missing time attributes

查看:265
本文介绍了将datetime.date对象转换为datetime.datetime对象,其中包含任何缺少时间属性的零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有内置函数将datetime.date对象转换为datetime.datetime对象,其中0是缺少的东西?例如,假设

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆