Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python get first and last day of current calendar quarter

I've built a function to get the first and last day of the current quarter but it's a bit long winded. I was wondering, is there a more succinct way of accomplishing this?

I understand that pandas has a QuarterBegin() function, but I couldn't implement it in a more concise way.

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: Please let me know if this would be better suited to Code Review

like image 293
Charon Avatar asked Apr 22 '16 12:04

Charon


People also ask

How do I get the last day of a quarter in Python?

is_quarter_end attribute of Pandas. Timestamp (an equivalent of Python's Datetime object) is used to check if the date is the last day of the quarter or not.

How do I get the first and last month of a date in python?

There are a few ways to do this, but I've gone with the following: last_date = datetime(year, month + 1, 1) + timedelta(days=-1) . This will calculate the first date of the following month, then subtract 1 day from it to get the last date of the current month.


1 Answers

Why roll your own?

import pandas as pd

quarter_start = pd.to_datetime(pd.datetime.today() - pd.tseries.offsets.QuarterBegin(startingMonth=1)).date()
like image 151
John Redford Avatar answered Oct 05 '22 02:10

John Redford