EMP*_*EMP 571 python datetime date
是否有内置的方法在Python 中将a转换date为a datetime,例如获取datetime给定日期的午夜?相反的转换很简单:datetime有一个.date()方法.
我真的要手动打电话datetime(d.year, d.month, d.day)吗?
kia*_*uno 724
您可以使用datetime.combine(日期,时间); 在那个时候,你创建一个datetime.time初始化为午夜的对象.
from datetime import date
from datetime import datetime
dt = datetime.combine(date.today(), datetime.min.time())
Run Code Online (Sandbox Code Playgroud)
Ale*_*lli 119
有几种方法,虽然我确实相信你提到的(并且不喜欢)是最可读的方式.
>>> 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)
Run Code Online (Sandbox Code Playgroud)
等等 - 但基本上它们都依赖于从date物体中适当地提取信息并将其犁回到合适的ctor或类功能中datetime.
Wes*_*ham 64
接受的答案是正确的,但我宁愿避免使用,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,
)
Run Code Online (Sandbox Code Playgroud)
这是我对"明确比隐含更好"的看法.
tee*_*ark 42
您可以使用date.timetuple()方法和解压缩运算符*.
args = d.timetuple()[:6]
datetime.datetime(*args)
Run Code Online (Sandbox Code Playgroud)
NON*_*ONO 11
你也可以使用
date = datetime.utcnow().date()
dt = datetime.fromisoformat(date.isoformat())
print(dt)
Run Code Online (Sandbox Code Playgroud)
日期时间. 日期时间(2021, 11, 15, 0, 0)
今天是2016年,我认为最干净的解决方案是由pandas Timestamp提供的:
from datetime import date
import pandas as pd
d = date.today()
pd.Timestamp(d)
Run Code Online (Sandbox Code Playgroud)
时间戳是大熊猫相当于日期时间,并且在大多数情况下可以与它互换.校验:
from datetime import datetime
isinstance(pd.Timestamp(d), datetime)
Run Code Online (Sandbox Code Playgroud)
但如果你真的想要一个香草日期时间,你仍然可以:
pd.Timestamp(d).to_datetime()
Run Code Online (Sandbox Code Playgroud)
时间戳比日期时间更强大,其中包括处理时区时.实际上,时间戳是如此强大,以至于它们的记录如此糟糕......
一种尚未提及的从日期转换为日期时间的方法:
from datetime import date, datetime
d = date.today()
datetime.strptime(d.strftime('%Y%m%d'), '%Y%m%d')
Run Code Online (Sandbox Code Playgroud)
您可以使用easy_date来简化此操作:
import date_converter
my_datetime = date_converter.date_to_datetime(my_date)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
288757 次 |
| 最近记录: |