我需要从任何日期开始上个月的第一天.我知道我可以使用monthdelta(datetime(2010,3,30), -1)上个月,但它不会在第一天返回.
这可以通过首先计算当月的第一天(或任何给定的date),然后用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)
Run Code Online (Sandbox Code Playgroud)
尝试这样。通过使用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)
Run Code Online (Sandbox Code Playgroud)
输入:
datetime.date(2016, 7, 5)
Run Code Online (Sandbox Code Playgroud)
输出
datetime.date(2016, 6, 1)
Run Code Online (Sandbox Code Playgroud)
尝试这个 :
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
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16652 次 |
| 最近记录: |