将datetime.date对象与datetime.datetime对象中的时间字符串组合在一起

时间:2015-05-20 22:19:20

标签: python datetime

假设您有一个/Library/Server/Xcode/Data/ProvisioningProfiles对象,例如datetime.date返回的对象。

稍后您还会得到一个字符串,表示补充日期对象的时间。

什么是在datetime.datetime对象中组合这两者的pythonic方法?更具体地说,我可以避免将日期对象转换为字符串吗?

这就是我现在要完成的工作:

datetime.date.today()

修改

我在第一个答案中描述了def combine_date_obj_and_time_str(date_obj, time_str): # time_str has this form: 03:40:01 PM return datetime.datetime.strptime(date_obj.strftime("%Y-%m-%d") + ' ' + time_str, "%Y-%m-%d %I:%M:%S %p") ,但是我将时间字符串转换为时间对象时有点不知所措:

datetime.datetime.combine

1 个答案:

答案 0 :(得分:5)

如果您只是阅读datetime的文档,或者查看交互式解释器中的help(datetime),那么您将看到combine方法:

  

classmethod datetime.combine(date, time)

     

返回一个新的datetime对象,其日期组件等于给定的date对象,其时间组件和tzinfo属性等于给定的time对象。对于任何datetime对象 d d == datetime.combine(d.date(), d.timetz())。如果 date datetime对象,则会忽略其时间组件和tzinfo属性。

所以,你不必自己写这个方法;它已经存在于模块中。

当然,您需要将time_str解析为time对象,但您显然已经知道如何执行此操作。

但是如果 希望自己编写它,将日期和时间格式化为字符串只是为了解析它们将是愚蠢的。为什么不直接访问属性?

return datetime(d.year, d.month, d.day, t.hour, t.minute. t.second, t.tzinfo)