2021-07-19 14:36:10 +00:00
|
|
|
import datetime
|
|
|
|
from calendar import monthrange
|
2021-01-17 14:53:30 +00:00
|
|
|
from django.utils import timezone
|
|
|
|
|
|
|
|
|
|
|
|
def start_of_month(a_day):
|
|
|
|
""" Returns first of the month of a given datetime object"""
|
|
|
|
return a_day.replace(day=1,hour=0,minute=0,second=0, microsecond=0)
|
|
|
|
|
|
|
|
def end_of_month(a_day):
|
|
|
|
""" Returns first of the month of a given datetime object"""
|
|
|
|
|
|
|
|
_, last_day = monthrange(a_day.year, a_day.month)
|
|
|
|
return a_day.replace(day=last_day,hour=23,minute=59,second=59, microsecond=0)
|
|
|
|
|
|
|
|
def start_of_this_month():
|
|
|
|
""" Returns first of this month"""
|
|
|
|
a_day = timezone.now()
|
|
|
|
return a_day.replace(day=1,hour=0,minute=0,second=0, microsecond=0)
|
|
|
|
|
|
|
|
def end_of_this_month():
|
|
|
|
""" Returns first of this month"""
|
|
|
|
a_day = timezone.now()
|
|
|
|
|
|
|
|
_, last_day = monthrange(a_day.year, a_day.month)
|
|
|
|
return a_day.replace(day=last_day,hour=23,minute=59,second=59, microsecond=0)
|
|
|
|
|
|
|
|
def end_before(a_date):
|
|
|
|
""" Return suitable datetimefield for ending just before a_date """
|
|
|
|
return a_date - datetime.timedelta(seconds=1)
|
|
|
|
|
|
|
|
def start_after(a_date):
|
|
|
|
""" Return suitable datetimefield for starting just after a_date """
|
|
|
|
return a_date + datetime.timedelta(seconds=1)
|