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

问题描述 投票:0回答:1

首先,我对python很陌生。我现在想知道如何在某一列(csv)中替换一个时间字符串,当该时间大于当前时间。

我正在构建的脚本依赖于petl,所以我使用的是petl。首先,用petl打开源csv作为table1。它包含多列,其中一列是 "结束时间"。在这一列中,我想用@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的值,这可能吗?

任何想法都非常感激!

python strptime petl
1个回答
0
投票

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

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

要实现这一点,可以像这样使用时间格式化。

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)
© www.soinside.com 2019 - 2024. All rights reserved.