如何根据当前日期变量获取当前和下个月的第一个日历日

How to get 1st calendar day of the current and next month based on a current date variable

我有一个日期变量调用 today_date,如下所示。我需要获取当前和下个月的第一个日历日。 在我的例子中,today_date 是 4/17/2021,我需要再创建两个变量调用 first_day_current 应该是 4/1/2021,和 first_day_next 应该是 5/1 /2021. 非常感谢任何建议

import datetime as dt    
today_date
'2021-04-17'

只获取一个月的第一个日期非常简单 - 因为它始终等于 1。如果 today_date 始终是一个字符串 "Year-Month-Day" (或任何一致的格式 - 相应地解析它),您甚至可以在不需要 datetime 模块来为您简化计算的情况下执行此操作

today_date = '2021-04-17'
y, m, d = today_date.split('-')
first_day_current = f"{y}-{m}-01"
y, m = int(y), int(m)
first_day_next = f"{y+(m==12)}-{m%12+1}-01"

如果你想使用 datetime.date(),那么无论如何你都必须将字符串转换为 (year, month, date) ints 作为参数(或者做 today_date = datetime.date.today(). 然后.replace(day=1)得到first_day_current。 datetime.timedelta 无法添加月份(最多只能添加几周),因此您需要使用 other libraries for this。但实际上做同样的事情需要更多的导入和计算。

我发现 pd.offsets 可以完成以下任务 -

import datetime as dt 
import pandas as pd

today_date #'2021-04-17' this is a variable that is being created in the program
first_day_current = today_date.replace(day=1) # this will be 2021-04-01
next_month = first_day_current + pd.offsets.MonthBegin(n=1)
first_day_next = next_month.strftime('%Y-%m-%d') # this will be 2021-05-01