【问题标题】:I need to compare and dates and return how many days are left to expiry or how many days ago they expired我需要比较和日期并返回还有多少天到期或多少天前到期
【发布时间】:2020-12-15 02:07:02
【问题描述】:

我以前从未使用过 Python,来自 Javascript 背景。

我需要遍历 csv 中的数组并将其与 today 变量中的日期进行比较。然后返回每个项目过期或有效的位置。还有还有多少天要到期或到期前多少天。

任何指针?

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变量比较?
  • 嗨@dcariotti 是的,没错

标签: python csv


【解决方案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

然后您可以使用此差异来打印或显示您想要的任何内容。例如:

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]))

所以完整的代码 sn-p 看起来像:

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]))

【讨论】:

  • 谢谢。我将如何使用设置为 ``` today = datetime(2020, 5, 2) ``` 的日期来实现它我已经尝试使用该变量但它似乎不起作用。虽然它适用于变量 ``` today = datetime(2020, 5, 2) ```
  • 抱歉,您评论的两个变量都是相同的...您能否更正它并再次让我知道您的疑问。您想使用自定义的今天日期吗?如果是这样,您可以这样做:today = datetime.datetime(2020,5,2).date() 在上面的代码中使用它..
  • 我设法通过使用today = datetime.datetime(2020, 5, 2).date() 让它工作我刚刚看到您的上述评论。我以同样的方式解决了它。很抱歉混淆了我必须复制并粘贴同一行两次的变量。感谢您的帮助
猜你喜欢
  • 2014-04-13
  • 1970-01-01
  • 2022-12-10
  • 2019-03-03
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多