【问题标题】:how to convert string 'Jan 23 2016 10:30:08AM' or string '23/01/2016 10:30:08' to epoch time in python?如何在python中将字符串'Jan 23 2016 10:30:08AM'或字符串'23/01/2016 10:30:08'转换为纪元时间?
【发布时间】:2020-03-18 08:36:39
【问题描述】:

我想比较包括日期在内的 2 次。 例如 : “2016 年 1 月 23 日下午 4:16:09”和“2016 年 1 月 24 日晚上 9:43:44”

我认为最简单和最好的方法是将其转换为 epoch 并进行比较。 (如果有比这更好的方法,请告诉我)

我试过这个:

from dateutil.parser import parse
import datetime

timer = 'Jan 23 2016 10:30:08AM'
d = parse(timer).strftime('%Y,%m,%d,%H,%M,%S')

>>> d
'2016,01,23,10,30,08'

但它是一个字符串,我无法传递这个值 datetime.datetime(d) 我也尝试了 strip() 。但不起作用。

datetime.datetime(d.strip())

TypeError: an integer is required (got type str)

请帮忙。

【问题讨论】:

    标签: python datetime datetime-comparison


    【解决方案1】:
    1. Parse 已经返回 datetime 对象。 .strftime 将日期时间对象转换为字符串,因此它不起作用。

    2. datetime 对象已经具有可比性,您不必将它们转换为纪元:

    >>> from dateutil.parser import parse
    >>> d1 = parse("Jan 23 2016 4:16:09PM")
    >>> d2 = parse("Jan 24 2016 9:43:44PM")
    >>> d1
    datetime.datetime(2016, 1, 23, 16, 16, 9)
    >>> d2
    datetime.datetime(2016, 1, 24, 21, 43, 44)
    >>> d1 > d2
    False
    >>> d1 == d2
    False
    >>> d1 < d2
    True
    

    【讨论】:

    • 谢谢@h4z3 我如何将 ("Jan 23 2016 4:16:09PM") 转换为 (2016, 1, 23, 16, 16, 9)?我的意思是我可以拆分,但是如何将 4PM 转换为 16,而不使其成为字符串?
    • 再次阅读我的答案。这不是(2016, 1, 23, 16, 16, 9),而是带有这些内部的datetime 对象。而你使用的parse 函数本身已经做到了!
    • 哦,对不起,我的错。非常感谢。
    猜你喜欢
    • 2018-07-10
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多