我试图在python中找到一个月的第一天有一个条件:如果我当前的日期超过了当月的25日,那么第一个日期变量将保存下个月的第一个日期而不是当前月份.我正在做以下事情:
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)
Run Code Online (Sandbox Code Playgroud)
这样做有更清洁的方法吗?
小智 126
可以在同一条线上完成
from datetime import datetime
datetime.today().replace(day=1)
Run Code Online (Sandbox Code Playgroud)
and*_*rew 41
这是一个简洁的解决方案.
import datetime
todayDate = datetime.date.today()
if todayDate.day > 25:
todayDate += datetime.timedelta(7)
print todayDate.replace(day=1)
Run Code Online (Sandbox Code Playgroud)
原始代码示例需要注意的一点是,如果您在1月的最后一天进行测试,则使用timedelta(30) 会导致麻烦.这就是我使用7天三角洲的原因.
使用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)
Run Code Online (Sandbox Code Playgroud)
小智 9
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)
Run Code Online (Sandbox Code Playgroud)