从现在到年底每月查找天数

2024-10-01 09:37:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个数组,该数组将容纳从当前月份到指定的未来日期(在本例中,我将使用12/31/2022)的每个月的天数。你知道吗

到目前为止,我能够设置它,以获得每个月的每一天,在给定的一年,但只有在一月开始。你知道吗

我需要做的是,例如,从现在开始的9月,创建一个数组,其中包含2022年9月、10月、11月……12月的一个月中的天。你知道吗

到目前为止,我的代码是:

total = 0
days = []
dayst = []
for i in range(1,13):
    month = datetime.datetime.strptime('{}'.format(i), "%m").strftime("%B")
    length_of_month = calendar.monthrange(MODELYEAR, i)[1]
    total = total + length_of_month
    days.append(length_of_month)
    dayst.append(total)
    totaldays = sum(days)

电流输出:

[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

我基本上只需要使结束时间动态化,并将开始时间移到当前月份。你知道吗

谢谢大家!你知道吗


Tags: of代码fordatetime时间数组dayslength
3条回答

基本上,您需要确定从当前日期到未来日期的每个月的天数。我认为这是一个非常直截了当的方法:

import calendar
import datetime


def days_per_month_until_end_date(end_year, end_month, end_day):
    today = datetime.datetime.today()
    future_date = datetime.datetime(end_year, end_month, end_day)
    result = []
    for year in range(today.year, future_date.year+1):
        start_month = today.month if year == today.year else 1
        end_month = future_date.month if year == future_date.year else 12
        for month in range(start_month, end_month+1):
            dim = calendar.monthlen(year, month)  # Days In Month
            result.append(dim)
    return result


print(days_per_month_until_end_date(2022, 12, 31))

2019-09-16运行结果(结束日期如图所示):

[30, 31, 30, 31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

使用datetime库获取两个日期之间的天数

>>> import calendar
>>> from dateutil import rrule
>>> from datetime import datetime
>>> end = datetime.strptime('12/31/2022', '%m/%d/%Y')
>>> start = datetime.now()
>>> [calendar.monthrange(dt_i.year, dt_i.month)[1] for dt_i in rrule.rrule(rrule.MONTHLY, dtstart=start, until=end)]
[30, 31, 30, 31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

你需要的是得到每个月的第一天的利息,并计算天数到下个月的第一天之后。你知道吗

import datetime

def days(ending):
    now = datetime.datetime.now()
    next_month = datetime.datetime(now.year, now.month, 1)
    while next_month <= ending:
        month = next_month
        y = month.year
        m = month.month + 1
        if m > 12:
            y += 1
            m = 1
        next_month = datetime.datetime(y, m, 1)
        yield (next_month - month).days

相关问题 更多 >