【发布时间】:2017-08-22 18:48:12
【问题描述】:
我有一个 datetime 实例声明如下:
dtDate = datetime.datetime(2016,1,1,0,0)
如何从dtDate 获取上个月和上一年?
例如类似:
dtDate.minusOneMonth()
# to return datetime.datetime(2015,12,1,0,0)
【问题讨论】:
我有一个 datetime 实例声明如下:
dtDate = datetime.datetime(2016,1,1,0,0)
如何从dtDate 获取上个月和上一年?
例如类似:
dtDate.minusOneMonth()
# to return datetime.datetime(2015,12,1,0,0)
【问题讨论】:
你可以使用:
dtDate = datetime.datetime(2016,1,1,0,0)
print (dtDate - pd.DateOffset(months=1))
2015-12-01 00:00:00
print (dtDate - pd.DateOffset(years=1))
2015-01-01 00:00:00
添加s 很重要,因为如果只使用year:
print (dtDate - pd.DateOffset(year=1))
0001-01-01 00:00:00
【讨论】:
你可以使用DateOffset:
In [32]:
dtDate = dt.datetime(2016,1,1,0,0)
dtDate - pd.DateOffset(months=1)
Out[32]:
Timestamp('2015-12-01 00:00:00')
【讨论】:
使用来自dateutil 的relativedelta:
import datetime
import dateutil.relativedelta
dtDate = datetime.datetime(2016,1,1,0,0)
# get previous month
print ((dtDate+dateutil.relativedelta.relativedelta(months=-1)).month)
# get previous year
print ((dtDate+dateutil.relativedelta.relativedelta(years=-1)).year)
输出:
12
2015
【讨论】: