在Python中将date转换为date时间

愚蠢的问题,但是有一个内置的方法在Python中将date转换为date ,即。 获取datetime的午夜的date ? 相反的转换很简单 – datetime有一个.date()方法。 我真的必须手动调用datetime(d.year, d.month, d.day)吗?

你可以使用datetime.combine (date,时间); 在那个时候,你创build一个datetime.time对象,初始化为午夜。

 from datetime import date from datetime import datetime d = date.today() datetime.combine(d, datetime.min.time()) 

有几种方法,尽pipe我确实相信你提到的(而且不喜欢)是最可读的。

 >>> t=datetime.date.today() >>> datetime.datetime.fromordinal(t.toordinal()) datetime.datetime(2009, 12, 20, 0, 0) >>> datetime.datetime(t.year, t.month, t.day) datetime.datetime(2009, 12, 20, 0, 0) >>> datetime.datetime(*t.timetuple()[:-4]) datetime.datetime(2009, 12, 20, 0, 0) 

等等 – 但基本上它们都依赖于从date对象中适当地提取信息,并将其重新放入合适的date或函数中。

你可以使用timetuple()方法和可变参数。

 datetime.datetime(*(d.timetuple()[:6])) 

被接受的答案是正确的,但我宁愿避免使用datetime.min.time()因为它对我来说并不明显。 如果这对你是显而易见的,那么给你更多的权力。 对于timetuple方法和对顺序的依赖,我也有同样的感受。

在我看来,不依靠读者对datetime模块API非常熟悉的最明确的方法是:

 from datetime import date, datetime today = date.today() today_with_time = datetime( year=today.year, month=today.month, day=today.day, ) 

这是我的“明确胜于暗示”。

您可以使用easy_date简化操作 :

 import date_converter my_datetime = date_converter.date_to_datetime(my_date) 

今天是2016年,我认为最干净的解决scheme是由pandas提供时间戳:

 from datetime import date import pandas as pd d = date.today() pd.Timestamp(d) 

时间戳是与date时间相当的pandas,在大多数情况下可与其互换。 检查:

 from datetime import datetime isinstance(pd.Timestamp(d), datetime) 

但是,如果你真的想要一个香草date时间,你仍然可以这样做:

 pd.Timestamp(d).to_datetime() 

时间戳比date时间更强大,在处理时区时也是如此。 实际上,时间戳是如此强大,以至于很遗憾他们的logging太糟糕了。

从date转换为date时间的一种方法还没有提到:

 from datetime import date, datetime d = date.today() datetime.strptime(d.strftime('%Y%m%d'), '%Y%m%d') 

使用pandas将一系列date转换为Pythondate时间:

 dates = pd.DataFrame( {'date': pd.DatetimeIndex(start='2017-01-01', end='2017-01-5', freq='D')}) >>> dates date 0 2017-01-01 1 2017-01-02 2 2017-01-03 3 2017-01-04 4 2017-01-05 >>> pd.DatetimeIndex(dates['date']).to_pydatetime().tolist() [datetime.datetime(2017, 1, 1, 0, 0), datetime.datetime(2017, 1, 2, 0, 0), datetime.datetime(2017, 1, 3, 0, 0), datetime.datetime(2017, 1, 4, 0, 0), datetime.datetime(2017, 1, 5, 0, 0)] 

可能首先需要转换date:

 dates = pd.DataFrame( {'date': ['2017-01-01', '2017-01-02', '2017-01-03', '2017-01-04', '2017-01-05']}) dates['date'] = pd.DatetimeIndex(dates['date']) pd.DatetimeIndex(dates['date']).to_pydatetime().tolist() 

如果你需要一些东西, datetime_object.date()会给你一个date时间对象的date。

我是Python的新手。 但是这个代码为我工作,将我提供的指定input转换为datetime。 这是代码。 如我错了请纠正我。

 import sys from datetime import datetime from time import mktime, strptime user_date = '02/15/1989' if user_date is not None: user_date = datetime.strptime(user_date,"%m/%d/%Y") else: user_date = datetime.now() print user_date