使用 Python 3.8、Pandas 1.14
我有一个整数值 20210126
我想创建一个 datetime 对象和它的 str 对象。
当前方法:
dt = 20210126 dt_dt = datetime(year=d_i//10000, month=(d_i%10000)//100, day=d_i%100) str_dt = dt_dt.strftime("%Y%m%d")
选择:
dt = 20210126 dt_dt = datetime(year=int(str(d_i)[:3]), month=int(str(d_i)[3:5]), day= int(str(d_i)[5:]) str_dt = str(dt)
这很好用,但是想知道是否有方便的方法。
在 Python 中,可以通过 pandas 提供的 to_datetime() 函数来简化这个过程。pandas.to_datetime() 可以将整数或字符串转换为 datetime 对象,同时还能灵活地将其格式化为字符串。对于您的例子,可以如下操作:
pandas
to_datetime()
pandas.to_datetime()
datetime
import pandas as pd dt = 20210126 # 将整数值转换为 datetime 对象 dt_dt = pd.to_datetime(str(dt), format='%Y%m%d') # 将 datetime 对象转换为字符串 str_dt = dt_dt.strftime('%Y%m%d') print(dt_dt) # 输出 datetime 对象 print(str_dt) # 输出格式化后的字符串
pd.to_datetime(str(dt), format='%Y%m%d')
这里首先将整数 20210126 转换为字符串 '20210126',然后使用 pandas.to_datetime() 将其按照指定的日期格式 '%Y%m%d' 转换为 datetime 对象。
20210126
'20210126'
'%Y%m%d'
dt_dt.strftime('%Y%m%d'):
dt_dt.strftime('%Y%m%d')
%Y%m%d
yyyyMMdd
如果不想依赖 pandas,可以通过 datetime 模块完成这项任务。您的原始方法已经很接近了,但还可以简化为:
from datetime import datetime dt = 20210126 # 将整数转换为 datetime 对象 dt_dt = datetime.strptime(str(dt), '%Y%m%d') # 将 datetime 对象转换为字符串 str_dt = dt_dt.strftime('%Y%m%d') print(dt_dt) # 输出 datetime 对象 print(str_dt) # 输出格式化后的字符串
datetime.strptime(str(dt), '%Y%m%d')
strptime
strftime('%Y%m%d')
strftime
这样,你就能得到一个简洁的解决方案,无论是使用 pandas 还是标准库 datetime。