我需要从任何日期开始上个月的第一天。
我知道我可以使用monthdelta(datetime(2010,3,30), -1)
来获取上个月,但它不会在第一天返回。
答案 0 :(得分:4)
这可以通过首先计算当前月份的第一天(或任何给定日期),然后使用datetime.timedelta(days = 1)减去它来获得,这将为您提供上个月的最后一天。
为了演示,这是一个示例代码:
import datetime
def get_lastday(current):
_first_day = current.replace(day=1)
prev_month_lastday = _first_day - datetime.timedelta(days=1)
return prev_month_lastday.replace(day=1)
答案 1 :(得分:3)
试试这个:
from datetime import date
d = date.today()
d.replace(
year=d.year if d.month > 1 else d.year - 1,
month=d.month - 1 if d.month > 1 else 12,
day=1
)
答案 2 :(得分:2)
试试这样。使用datetime
和datetutil
。
(如果datetutil
无法安装pip install python-dateutil
)
In [1]: from datetime import datetime
In [2]: import dateutil.relativedelta
In [3]: today_date = datetime.now().date()
In [4]: today_date
Out[1]: datetime.date(2016, 7, 5)
In [5]: last_month = today_date - dateutil.relativedelta.relativedelta(months=1)
In [6]: last_mont_first_date = last_month.replace(day=1)
In [7]: last_mont_first_date
Out[2]: datetime.date(2016, 6, 1)
<强>输入:强>
datetime.date(2016, 7, 5)
<强>输出强>
datetime.date(2016, 6, 1)