Подсчет количества дней между двумя датами - PullRequest
0 голосов
/ 04 мая 2020

Код ниже подсчитывает количество дней между двумя разными датами в python. Он проверяет год только в формате YYYY, а не YY (т.е. принимает год как 2019, но не как 19). Как изменить код, чтобы оба формата можно было принять и распечатать разницу между двумя датами? Я знаю, что использование% y занимает год как 19. Но как проверить% Y и% y в одной строке кода?

from datetime import datetime

first_date = "May 2 2020"
sec_date = "Jun 30 2020"
con_date = datetime.strptime(first_date, '%b %d %Y').date()
con_date2 = datetime.strptime(sec_date, '%b %d %Y').date()
delta = con_date2 - con_date
print(delta.days)

1 Ответ

0 голосов
/ 04 мая 2020

вы могли бы написать функцию, которая пробует несколько форматов для разбора строки:

from datetime import datetime

def parse_custom_date(s, formats=['%b %d %Y', '%b %d %y']):
    dtobj = None
    for f in formats:
        try:
            dtobj = datetime.strptime(s, f)
            break # break loop if parse successful
        except ValueError:
            continue # invalid format, continue to next format in "formats"...
    if dtobj:
        return dtobj
    # implicit else: function didn't return, so...
    raise ValueError(f"no matching format found for '{s}' in {formats}!")


first_date, second_date = "May 2 2020", "Jun 30 20"
print((parse_custom_date(second_date)-parse_custom_date(first_date)).days)
# 59

first_date, second_date = "May 2 2020", "asdf"
print((parse_custom_date(second_date)-parse_custom_date(first_date)).days)
# ValueError: no matching format found for 'asdf' in ['%b %d %Y', '%b %d %y']!

[ref]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...