我正在尝试用python获取上个月的日期。下面是我尝试过的:
str( time.strftime('%Y') ) + str( int(time.strftime('%m'))-1 )
然而,这种方式很糟糕,原因有两个:第一,它在2012年2月返回20122 (而不是201202);第二,它在1月份返回0而不是12。
我已经用bash解决了这个问题。
echo $(date -d"3 month ago" "+%G%m%d")
我认为,如果bash具有实现此目的的内置方法,那么装备更强大的python应该提供比强迫编写自己的脚本来实现此目标更好的东西。当然,我可以这样做:
if int(time.strftime('%m')) == 1:
return '12'
else:
if int(time.strftime('%m')) < 10:
return '0'+str(time.strftime('%m')-1)
else:
return str(time.strftime('%m') -1)
我还没有测试过这段代码,而且我也不想使用它(除非我找不到其他方法:/)
谢谢你的帮忙!
发布于 2012-03-16 01:35:06
您应该使用dateutil。有了这个,你可以使用relativedelta,它是时间增量的改进版本。
>>> import datetime
>>> import dateutil.relativedelta
>>> now = datetime.datetime.now()
>>> print now
2012-03-15 12:33:04.281248
>>> print now + dateutil.relativedelta.relativedelta(months=-1)
2012-02-15 12:33:04.281248
发布于 2012-11-03 00:41:17
from datetime import date, timedelta
first_day_of_current_month = date.today().replace(day=1)
last_day_of_previous_month = first_day_of_current_month - timedelta(days=1)
print "Previous month:", last_day_of_previous_month.month
或者:
from datetime import date, timedelta
prev = date.today().replace(day=1) - timedelta(days=1)
print prev.month
发布于 2019-03-22 16:45:23
对于来到这里并希望同时获得上个月的第一天和最后一天的人:
from datetime import date, timedelta
last_day_of_prev_month = date.today().replace(day=1) - timedelta(days=1)
start_day_of_prev_month = date.today().replace(day=1) - timedelta(days=last_day_of_prev_month.day)
# For printing results
print("First day of prev month:", start_day_of_prev_month)
print("Last day of prev month:", last_day_of_prev_month)
输出:
First day of prev month: 2019-02-01
Last day of prev month: 2019-02-28
https://stackoverflow.com/questions/9724906
复制相似问题