Get first date of month python

I'm trying to find the first day of the month in python with one condition: if my current date passed the 25th of the month, then the first date variable will hold the first date of the next month instead of the current month. I'm doing the following:

import datetime 
todayDate = datetime.date.today()
if (todayDate - todayDate.replace(day=1)).days > 25:
    x= todayDate + datetime.timedelta(30)
    x.replace(day=1)
    print x
else:
    print todayDate.replace(day=1)

is there a cleaner way for doing this?

Get first date of month python

Mel

5,56810 gold badges39 silver badges42 bronze badges

asked May 23, 2016 at 16:42

Get first date of month python

2

Can be done on the same line using date.replace:

from datetime import datetime

datetime.today().replace(day=1)

Get first date of month python

cglacet

7,3003 gold badges39 silver badges53 bronze badges

answered Jul 23, 2017 at 15:40

Get first date of month python

5

This is a pithy solution.

import datetime 

todayDate = datetime.date.today()
if todayDate.day > 25:
    todayDate += datetime.timedelta(7)
print todayDate.replace(day=1)

One thing to note with the original code example is that using timedelta(30) will cause trouble if you are testing the last day of January. That is why I am using a 7-day delta.

answered May 23, 2016 at 17:05

Get first date of month python

andrewandrew

3,8291 gold badge23 silver badges38 bronze badges

1

Use dateutil.

from datetime import date
from dateutil.relativedelta import relativedelta

today = date.today()
first_day = today.replace(day=1)
if today.day > 25:
    print(first_day + relativedelta(months=1))
else:
    print(first_day)

answered May 23, 2016 at 16:55

lampslavelampslave

1,32514 silver badges18 bronze badges

1

from datetime import datetime

date_today = datetime.now()
month_first_day = date_today.replace(day=1, hour=0, minute=0, second=0, microsecond=0)
print(month_first_day)

answered Dec 13, 2018 at 7:24

Get first date of month python

Balaji.J.BBalaji.J.B

5386 silver badges14 bronze badges

1

Use arrow.

import arrow
arrow.utcnow().span('month')[0]

answered Jul 17, 2018 at 10:03

ImPerat0R_ImPerat0R_

5538 silver badges8 bronze badges

This could be an alternative to Gustavo Eduardo Belduma's answer:

import datetime 
first_day_of_the_month = datetime.date.today().replace(day=1)

answered Apr 9, 2020 at 7:54

Get first date of month python

tjurkantjurkan

3614 silver badges7 bronze badges

1

Yes, first set a datetime to the start of the current month.

Second test if current date day > 25 and get a true/false on that. If True then add add one month to the start of month datetime object. If false then use the datetime object with the value set to the beginning of the month.

import datetime 
from dateutil.relativedelta import relativedelta

todayDate = datetime.date.today()
resultDate = todayDate.replace(day=1)

if ((todayDate - resultDate).days > 25):
    resultDate = resultDate + relativedelta(months=1)

print resultDate

answered May 23, 2016 at 16:56

mba12mba12

2,5326 gold badges34 silver badges52 bronze badges

The arrow module will steer you around and away from subtle mistakes, and it's easier to use that older products.

import arrow

def cleanWay(oneDate):
    if currentDate.date().day > 25:
        return currentDate.replace(months=+1,day=1)
    else:
        return currentDate.replace(day=1)


currentDate = arrow.get('25-Feb-2017', 'DD-MMM-YYYY')
print (currentDate.format('DD-MMM-YYYY'), cleanWay(currentDate).format('DD-MMM-YYYY'))

currentDate = arrow.get('28-Feb-2017', 'DD-MMM-YYYY')
print (currentDate.format('DD-MMM-YYYY'), cleanWay(currentDate).format('DD-MMM-YYYY'))

In this case there is no need for you to consider the varying lengths of months, for instance. Here's the output from this script.

25-Feb-2017 01-Feb-2017
28-Feb-2017 01-Mar-2017

answered Feb 22, 2017 at 14:41

Get first date of month python

Bill BellBill Bell

20.4k5 gold badges42 silver badges57 bronze badges

1

I found a clean way to do this is to create a datetime object using the month and year attributes of todayDate, with days set to 1 i.e.

import datetime 
todayDate = datetime.date.today()

firstOfMon = datetime.date(todayDate.year, todayDate.month, 1)

answered Sep 24, 2021 at 11:05

You can use dateutil.rrule:

In [1]: from dateutil.rrule import *

In [2]: rrule(DAILY, bymonthday=1)[0].date()
Out[2]: datetime.date(2018, 10, 1)

In [3]: rrule(DAILY, bymonthday=1)[1].date()
Out[3]: datetime.date(2018, 11, 1)

answered Sep 21, 2018 at 8:06

dtatarkindtatarkin

1,0217 silver badges6 bronze badges

One-liner:

from datetime import datetime, timedelta
last_month=(datetime.now().replace(day=1) - timedelta(days=1)).replace(day=1)

answered Dec 7, 2021 at 10:32

Get first date of month python

My solution to find the first and last day of the current month:

def find_current_month_last_day(today: datetime) -> datetime:
    if today.month == 2:
        return today.replace(day=28)

    if today.month in [4, 6, 9, 11]:
        return today.replace(day=30)

    return today.replace(day=31)


def current_month_first_and_last_days() -> tuple:
    today = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
    first_date = today.replace(day=1)
    last_date = find_current_month_last_day(today)
    return first_date, last_date

answered Oct 22, 2019 at 10:17

Get first date of month python

mhyousefimhyousefi

9042 gold badges12 silver badges29 bronze badges

First day of next month:

from datetime import datetime

class SomeClassName(models.Model):
    if datetime.now().month == 12:
        new_start_month = 1
    else:
        new_start_month = datetime.now().month + 1

Then we replace the month and the day

    start_date = models.DateField(default=datetime.today().replace(month=new_start_month, day=1, hour=0, minute=0, second=0, microsecond=0))

answered Jul 22, 2020 at 15:40

Inspired by Jouberto's and @akx's answers (elsewhere), oneliners without any dependencies:

now = datetime.datetime.now(tz=ZoneInfo("UTC"))
this_month = now.replace(day=1, hour=0, minute=0, second=0, microsecond=0)
next_month = (this_month.replace(day=28) + datetime.timedelta(days=4)).replace(day=1)
last_month = (this_month.replace(day=1) - datetime.timedelta(days=1)).replace(day=1)

answered Sep 5 at 12:53

Get first date of month python

Aapo RistaAapo Rista

1111 silver badge4 bronze badges

How do I get the first day of the month in Python?

Get First Day of Month Using Python.
import datetime currentDate = datetime. date. today() firstDayOfMonth = datetime. date(currentDate. ... .
import datetime currentDate = datetime. date. today() firstDayOfMonth = datetime. ... .
import calendar import datetime currentDate = datetime. date. today() lastDayOfMonth = datetime..

How do I get start and end date month data from a specific date in Python?

You can use current_date. replace(day=1) to get first day in current month. And if you substract datetime. timedelta(days=1) then you get last day in previous month.

How do I get the first day of the last month in Python?

python first day of last month.
from datetime import date, timedelta..
last_day_of_prev_month = date. today(). replace(day=1) - timedelta(days=1).
start_day_of_prev_month = date. today(). ... .
print("First day of prev month:", start_day_of_prev_month).
print("Last day of prev month:", last_day_of_prev_month).

How do I get the start date and end date in Python?

“how to use a date range in python from start date and end date” Code Answer.
import pandas as pd..
from datetime import datetime..
pd. date_range(end = datetime. today(), periods = 100). to_pydatetime(). tolist().
pd. date_range(start="2018-09-09",end="2020-02-02"). to_pydatetime(). tolist().