在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