Я построил функцию, чтобы получить первый и последний день текущего квартала, но он немного длинный. Мне было интересно, есть ли более лаконичный способ сделать это?Python получить первый и последний день текущего календарного квартала
Я понимаю, что pandas
имеет функцию QuarterBegin()
, но я не мог реализовать ее более кратким образом.
import datetime as dt
from dateutil.relativedelta import relativedelta
def get_q(first=None,last=None):
today = dt.date.today()
qmonth = [1, 4, 7, 10]
if first:
for i,v in enumerate(qmonth):
if (today.month-1)//3 == i:
return dt.date(today.year,qmonth[i],1).strftime("%Y-%m-%d")
if last:
firstday = dt.datetime.strptime(get_q(first=True),"%Y-%m-%d")
lastday = firstday + relativedelta(months=3, days=-1)
return lastday.strftime("%Y-%m-%d")
EDIT: Пожалуйста, дайте мне знать, если это было бы лучше всего подходит для Code Review
Почему 'relativedelta (месяцев = 3) - dt.timedelta (дни = 1)' вместо 'relativedelta (месяцев = 3, дней = -1)'? – Paul
@Paul - да, это лучше. Спасибо. Я отредактирую сообщение. – Charon