Как проверить дату между кортежем, даты как начало и конец - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть функция, в которой он создает словарь, как показано ниже.

x = {'filename': {'filetype': ('5/6/2019', '12/31/2019')}, 'filename2': {'filetype': ('3/24/2018', '5/6/2019')}}

Мне нужно создать новую функцию, передав дату и ее тип, чтобы вернуть имя файла на основе дат кортежа.

def fn(date, filetype):
    I'm trying to pass a date as a first argument
    and the date should check if it is in between  the tuple as start and end dates
    in the dictionary values above If it is in between those dates I need to return the file name

    return filename

Вопрос:

Можно ли проверить промежуточные даты для кортежей?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

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

from datetime import datetime
x = {'filename': {'filetype': ('5/6/2019', '12/31/2019')}, 'filename2': {'filetype': ('3/24/2018', '5/6/2019')}}

def fn(dateobj, filetype):
    dateobj = datetime.strptime(dateobj, '%m/%d/%Y')
    startdate = datetime.strptime(filetype[0], '%m/%d/%Y')
    enddate = datetime.strptime(filetype[1], '%m/%d/%Y')
    return startdate <= dateobj <= enddate

print(fn('6/6/2019', x['filename']['filetype']))
print(fn('4/6/2019', x['filename']['filetype']))

, это напечатает:

True
False
0 голосов
/ 05 ноября 2019

Используйте split для преобразования дат в 3 числовых значения в следующем порядке: год, месяц, дата. Затем вы можете сравнить даты как кортежи.

def convert(datestr):
    m, d, y = datestr.split('/')
    return (int(y), int(m), int(d))

date1 = convert('12/31/2018')
date2 = convert('1/1/2019')

print(date1 < date2)

Тот же подход работает со списками, но эти два типа не должны смешиваться, либо все даты в сравнении являются кортежами, либо все даты являются списками.


Для интервалов дат просто проверьте (например, в выражении if):

begin <= date <= end

, где все 3 значения соответствуют описанным выше.

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