如何从行中获取 strptime 并与当前时间进行比较?

How to get strptime from row and compare to current time?

首先,我对 python 非常陌生。我现在想弄清楚当某个时间大于当前时间时如何替换特定列 (csv) 中的时间字符串。

我正在构建的脚本依赖于 petl,所以这就是我正在使用的。首先,使用 petl 作为 table1 打开源 csv。它包含多个列,其中一列是“结束时间”。在本专栏中,我想用@time 替换那个时间? (对于 HTML 稍后格式化),仅当它大于当前时间时。

时间的格式类似于“12:15”。但是,当 运行 带有 > 的行但 < 列中的所有值发生变化时,我没有看到任何变化。

我纠结的线路:

current=time.localtime()
table2= petl.convert(table1, ' End time', lambda v, row: '@'+v+'?' if time.strptime(v, '%H:%M') > current else v, pass_row=True)

我还想知道如何打印或查看 time.strptime 正在使用的值,这可能吗?

非常感谢任何想法!

如果您只将小时和分钟传递给 time.strptime,strptime 会自动用 1900、1、1 填充年、月、日的缺失值 - 所以当然总是小于 time.localtime().

如果您的 table 包含 24 小时格式的时间,您可以直接将 table 中的时间字符串与狭义的本地时间(只是 TIME 部分)进行比较。

为此,请像这样使用时间格式:

current = time.strftime('%H:%M',time.localtime())

在 shell 中启动 python 解释器并处理计算的中间步骤通常很有帮助。只需键入变量,您就会看到它的计算结果:

>>> t2 = time.strptime('12:15', '%H:%M')
>>> t2
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=12, tm_min=15, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)