функция datetime, которая преобразует ввод в ггггмм в начало и конец месяца - PullRequest
2 голосов
/ 31 марта 2020

Я новичок в использовании datetime

Из ввода в ггггмм (int)

input = 202003

Я хотел бы создать функцию, которая преобразует это в переменную int yyyymmdd из первые и последние дни месяца, в данном случае:

start = 20200301
end =  20200331

Спасибо

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Вы можете использовать пакет календаря:

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, но я рекомендую использовать строки для работы с datetime

1 голос
/ 31 марта 2020

КОД:

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)

Например:

Если вход string равен 202003, выход будет

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

Если вход string равен 202002, выход будет

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

Если вход string равен 202012, выход будет

start: 2020-12-01
end: 2020-12-31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...