添加30分钟到从文本文件读取的时间并与当前时间进行比较

时间:2014-06-19 09:36:58

标签: python python-2.7 datetime time strftime

我正在尝试创建一个小脚本来使用文本文件中的时间,然后将30分钟添加到该数字,然后与“当前时间”进行比较,看看是否已超过30分钟......

import os
from time import time, sleep, strftime

with open('timecheck.txt') as timecheck:
    last_timecheck = timecheck.read().strip()
    print last_timecheck 

currenttime = strftime('%H:%M:%S')
if last_timecheck + 30 >= currenttime:
    if os.path.exists("../test.csv"):
        with open("timecheck.txt", 'wb') as timecheck:
            timecheck.write("1")
    else:
        currenttime = strftime('%H:%M:%S')
        with open("timecheck.txt", 'wb') as timecheck:
            timecheck.write(currenttime)

任何帮助都会受到赞赏,我无法弄清楚如何正确地做到这一点。

1 个答案:

答案 0 :(得分:5)

不是为当前时间创建字符串,而是使用datetime.datetime.strftime()解析从文件中读取的字符串,例如:

import datetime

last_timecheck = datetime.datetime.strptime(last_timecheck, '%H:%M:%S')
last_timecheck = datetime.datetime.combine(datetime.date.today(), last_timecheck.time())

if last_timecheck + datetime.timedelta(minutes=30) <= datetime.datetime.now():

检查超过30分钟是否已经过去。

可能应在您写入文件的信息中包含 date 。如果你不这样做,那么23:30:45将永远不会在30分钟前出现&#39;在当天

如果您不需要时间戳是人类可读的,那么只需写入自UNIX时代以来的秒数:

timecheck.write(str(time.time()))

这是一个浮点值,您可以通过以下方式再次阅读:

last_timecheck = float(timecheck.read())

由于它是数字表示,因此您可以测试是否已经过了30分钟:

if last_timecheck + 30 <= time.time():