datetime函数,用于将yyyymm输入转换为月初和月底日期输出

2024-06-24 12:03:13 发布

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

我不习惯使用datetime

来自yyyymm(int)中的输入

input = 202003

我想创建一个函数,将其转换为该月第一天和最后一天的int变量yyyymmdd,在本例中:

start = 20200301
end =  20200331

谢谢


Tags: 函数inputdatetimestartintend习惯本例
2条回答

您可以使用日历包:

import calendar
def get_start_end_month(input_):

    input_ = str(input_)

    year = int(input_[:4])
    month = int(input_[4:])

    start = int(input_+"01")
    end = int(input_+str(calendar.monthrange(year, month)[1]))

    return start, end

这里的输入是int,但我建议使用字符串来处理日期时间

代码:

from datetime import datetime, date, timedelta

string = "202003" # > Your input string
start = datetime.strptime(string, "%Y%m").date()

nextmonth = 1 if start.month == 12 else start.month + 1 #  > if current month is 12 cycle to 1
year = start.year + 1 if nextmonth == 1 else start.year

end = date(year, nextmonth, 1) - timedelta(days=1)

print("start:", start)
print("end:", end)

例如:

如果输入string202003,则输出为

start: 2020-03-01
end: 2020-03-31

如果输入string202002,则输出为

start: 2020-02-01
end: 2020-02-29

如果输入string202012,则输出为

start: 2020-12-01
end: 2020-12-31

相关问题 更多 >