计算前一,两或三天的日期

时间:2018-12-01 15:10:26

标签: python python-3.x python-2.7 date datetime

我要计算前一,两或三天的日期。我有一个执行此操作的函数,但是我希望能够根据存在的先前JSON文件计算正确的先前日期。

我知道我将需要某种条件语句,但是我不确定如何处理该语句。然后,此变量将在for循环中使用,以读取前一天文件和当前日期文件中的内容以进行一些分析。如果前一天的文件不可用,则需要将其递增一个,直到找到文件为止。

我的代码如下:

def previous_day():
    previous_day = str(datetime.date.today() - datetime.timedelta(1))
    return str(previous_day)


def current_day():
    current_day = str(datetime.datetime.today().strftime('%Y-%m-%d'))
    return str(current_day)


with open(currentday + '.json', 'r') as f, open(previousday + '.json', 'r') as g:
    for cd, pd in zip(f, g):
        data_current = json.loads(cd)
        data_previous = json.loads(pd)

1 个答案:

答案 0 :(得分:2)

如果您只是想查找最新的两个文件进行比较,我认为您根本不需要理会日期计算,因为您的文件名只是ISO日期字符串。您可以只获取目录中的所有文件,对其进行排序,然后以所需的任何顺序进行比较。

从目录中获取所有文件名

import os

files = os.listdir('/home/foo/bar')
# if there are unneeded files or subdirectories, filter the resulting list

按日期降序排列文件

files = ['2018-11-23.json', '2018-11-29.json', '2018-11-25.json']
files.sort(key=lambda f: f.split('.')[0], reverse=True)
# sort output: ['2018-11-29.json', '2018-11-25.json', '2018-11-23.json']

打开最新和最近的文件进行比较

with open(files[0], 'r') as latest, open(files[1], 'r') as previous:
    # compare files
    pass