Мне нужно сравнить даты и вернуть, сколько дней осталось до истечения срока действия или сколько дней назад они истекли

Я никогда раньше не использовал Python, исходя из фона Javascript.

Мне нужно перебрать массив в csv и сравнить его с датой в сегодняшней переменной. Затем вернитесь туда, где срок действия каждого элемента истек или действителен. Также сколько дней осталось до истечения срока действия или сколько дней назад они истекли.

Любые указатели?

from datetime import datetime

today = datetime(2020, 5, 2)

with open('./guarantees_end.csv', 'r') as f: 
    for line in f.readlines():

Мои данные csv скомпилированы, как показано ниже:

2020-06-23,Flat C

2020-07-31,2 Teal Close

2020-08-14,67 Pinkers Mead

2020-08-31,3 Acacia Road

2020-04-13,1 Manor Place

Итак, ваш вопрос касается чтения файла csv и последующего сравнения с переменной today?

santo 14.12.2020 18:10

Привет @dcariotti да, верно

Peppa Box 14.12.2020 18:34
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
141
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете прочитать сегодняшнюю дату, используя:

import datetime    
today = datetime.datetime.now().date()

Мой temp.csv содержит:

2020-12-11, ABCD
2020-12-23, EFGH
2020-12-01, IJKL
2020-11-11, MNOP

Для чтения из CSV вы можете использовать:

f = open('temp.csv')
csv_reader = csv.reader(f, delimiter=',')
for row in csv_reader:
    product_date_str = str(row[0])

Теперь вы можете преобразовать строку даты (прочитанную из csv) в объект datetime.date, используя:

date_format = '%Y-%m-%d'
product_date = datetime.datetime.strptime(product_date_str, date_format).date()

Теперь вы можете получить разницу дат, используя:

diff = (today - product_date).days

И затем вы можете использовать этот diff для печати или отображения всего, что вы хотите. Например:

if diff > 0:
    print('{} has already expired since {} days.'.format(row[1], abs(diff)))
elif diff < 0:
    print('{} will expire in next {} days.'.format(row[1], abs(diff)))
else:
    print('{} will expire today.'.format(row[1]))

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

import  csv
import datetime

today = datetime.datetime.now().date()
with open('temp.csv') as f:
    csv_reader = csv.reader(f, delimiter=',')
    for row in csv_reader:
        product_date_str = str(row[0])
        date_format = '%Y-%m-%d'
        product_date = datetime.datetime.strptime(product_date_str, date_format).date()
        diff = (today - product_date).days
        if diff > 0:
            print('{} has already expired since {} days.'.format(row[1], abs(diff)))
        elif diff < 0:
            print('{} will expire in next {} days.'.format(row[1], abs(diff)))
        else:
            print('{} will expire today.'.format(row[1]))

Спасибо. Как бы я реализовал это с датой, установленной как «сегодня = дата-время (2020, 5, 2)» Я пробовал это с этой переменной, но, похоже, это не работает. Хотя это работает с переменной ``` сегодня = datetime (2020, 5, 2) ```

Peppa Box 14.12.2020 21:13

Извините, но обе переменные, которые вы прокомментировали, одинаковы... Не могли бы вы исправить это и снова сообщить мне о своих сомнениях.. Вы хотите использовать пользовательскую сегодняшнюю дату? Если это так, вы можете сделать: today = datetime.datetime(2020,5,2).date(), чтобы использовать его в приведенном выше коде.

Nikunj Patel 15.12.2020 11:19

Мне удалось заставить его работать с помощью today = datetime.datetime(2020, 5, 2).date() Я только что увидел ваш комментарий выше. Я решил это так же. Извиняюсь, что перепутал переменную. Должно быть, я дважды скопировал и вставил одну и ту же строку. спасибо за помощь

Peppa Box 15.12.2020 11:55

Другие вопросы по теме