Convert date to datetime in Python
在python中是否有一种内置的方法可以将
我真的需要手动打电话给
可以使用date time.combine(日期、时间);对于时间,可以创建一个初始化为午夜的
1 2 3 4 | from datetime import date from datetime import datetime d = date.today() datetime.combine(d, datetime.min.time()) |
有几种方法,尽管我相信你提到的(和不喜欢的)是最易读的。
1 2 3 4 5 6 7 | >>> 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) |
等等——但基本上,它们都依赖于从
接受的答案是正确的,但我宁愿避免使用
在我看来,在不依赖于读者非常熟悉
1 2 3 4 5 6 7 | from datetime import date, datetime today = date.today() today_with_time = datetime( year=today.year, month=today.month, day=today.day, ) |
这就是我对"显性优于隐性"的看法。
您可以使用
1 2 | args = d.timetuple()[:6] datetime.datetime(*args) |
今天是2016年,我认为最干净的解决方案是由熊猫时间戳提供的:
1 2 3 4 | from datetime import date import pandas as pd d = date.today() pd.Timestamp(d) |
timestamp是与datetime等效的panda,在大多数情况下可以与之交换。检查:
1 2 | from datetime import datetime isinstance(pd.Timestamp(d), datetime) |
但是,如果您真的想要一个普通的日期时间,您仍然可以这样做:
1 | pd.Timestamp(d).to_datetime() |
在处理时区时,时间戳比日期时间要强大得多。实际上,时间戳是如此强大,以至于遗憾的是,它们的文档记录得如此糟糕…
将尚未提到的日期转换为日期时间的一种方法:
1 2 3 | from datetime import date, datetime d = date.today() datetime.strptime(d.strftime('%Y%m%d'), '%Y%m%d') |
您可以使用简单的日期来简化:
1 2 | import date_converter my_datetime = date_converter.date_to_datetime(my_date) |
使用pandas将一系列日期转换为python日期时间:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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)] |
可能首先需要转换日期:
1 2 3 4 | 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() |
如果您需要快速的东西,
我是Python的新手。但这段代码对我很有用,它将我提供的指定输入转换为datetime。这是密码。如果我错了就纠正我。
1 2 3 4 5 6 7 8 9 10 | 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 |