user1762447 user1762447 - 6 months ago 41
Python Question

finding first day of the month in python

I'm trying to find the first day of the month in python with one condition which is 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 like 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?

Thanks in advance!

Answer

This is a pithy solution.

import datetime 

todayDate = datetime.date.today()
if todayDate.day > 25:
    todayDate =  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.