我需要比较和日期,然后返回还有多少天到期,或者它们在多少天前到期



我以前从未使用过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

您可以使用:读取今天的日期

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

相关内容

最新更新