【问题标题】:How to get strptime from row and compare to current time?如何从行中获取 strptime 并与当前时间进行比较?
【发布时间】:2020-08-12 03:25:03
【问题描述】:

首先,我对所有 python 都很陌生。我现在试图弄清楚当时间大于当前时间时如何替换某个列(csv)中的时间字符串。

我正在构建的脚本依赖于 petl,所以这就是我正在使用的。首先,源 csv 使用 petl 作为 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】:

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

    如果您的表格包含 24 小时格式的时间,您可以直接将表格中的时间字符串与狭义的本地时间(仅 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)
    

    【讨论】:

    • 很好,感谢您的回复!我明白你的意思,如果我用 strftime 替换当前变量,它会输出一个只包含 H 和 M 的字符串。但是,当将它与 time.strptime(1900 等)进行比较时,它现在会产生相反的效果,(> 是始终为真,
    • 没错。如果您是 Python 新手,学习自省会有所帮助,这意味着您始终可以了解对象的类型、属性和方法等。对于介绍,您可以从这里开始:zetcode.com/lang/python/introspection
    • 感谢您的信息!只是通知一下,我不知道 strftime 可以与字符串格式的时间进行比较,现在效果很好。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-12-05
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 2011-04-05
    • 1970-01-01
    相关资源
    最近更新 更多