【问题标题】:Convert a datetime.date object into a datetime.datetime object with zeros for any missing time attributes将 datetime.date 对象转换为 datetime.datetime 对象,其中任何缺失的时间属性均为零
【发布时间】:2012-06-26 21:55:59
【问题描述】:

是否有一个内置函数可以将 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)

但两者都不起作用。 There is a builtin function to go from datetime.datetime to datetime.date, but I'm looking for the reverse operation.

一个非常糟糕的解决方案是这样写:

datetime.datetime(tdate.year(), tdate.month(), tdate.day(), 0, 0)

我特别想避免这种不好的做法。

我已经编写了自己的小函数来执行此操作,但我认为它应该在模块中提供。为了使用我的功能,它弄乱了一些系统范围的导入。它是可行的,只是不是很 Pythonic。

我只是想看看是否有人知道是否有一种仅使用 datetime 模块功能的有效方法。

【问题讨论】:

    标签: python date datetime python-datetime


    【解决方案1】:

    .combine(date, time) 与空的time instance 一起使用:

    >>> 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)
    

    【讨论】:

    • 这行得通。据说我要等11分钟才能接受,但到时候我会的。谢谢。
    • @EMS:那是因为其他人可能会为您提供更好的答案,他们也需要机会。 :-) 我不着急。
    • @EMS:例如,我刚刚意识到时间实例的小时参数是可选的;不给 0 会得到相同的结果。
    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多