关于datetime:Python:将复杂的日期和时间字符串转换为时间戳

Python: convert complicated date and time string to timestamp

我想知道如何转换这个日期格式

1
"Thu 21st Aug '14, 4:58am"

用python创建时间戳?

我需要转换的另一种格式:

1
"Yesterday, 7:22am"

我尝试分析Util但没有成功…


如果您还没有这样做,请查看dateutils.parser中的parse函数来解析表示日期的字符串…

1
2
3
4
>>> from dateutil.parser import parse
>>> dt = parse("Thu 21st Aug '14, 4:58am")
>>> dt
datetime.datetime(2014, 8, 21, 4, 58)

…然后要将datetime对象转换为时间戳,可以执行以下操作:

1
2
3
4
>>> import time
>>> import datetime
>>> time.mktime(dt.timetuple())
1408593480.0

附带说明,parse是一个有用的函数,可以识别大量不同的日期格式。然而,有时它太有用了,它会看到一些日期,而这些日期可能不是预定日期:

1
2
>>> parse("14, m 23")
datetime.datetime(2014, 8, 23, 0, 14)

如果您还想分析"昨天,上午7:22"之类的表达式,可以执行以下两项操作之一:

  • 用"25/08/2014"(或其他适当日期)替换"昨天"、"昨天"、"昨天"、"昨天"、"昨天"和其他变体,然后在新字符串上使用parse

  • 使用另一个库来分析字符串。ParseDateTime是一个选项…

  • 下面是ParseDateTime的示例:

    1
    2
    3
    4
    5
    >>> import parsedatetime.parsedatetime as pdt
    >>> p = pdt.Calendar()
    >>> d = p.parse("Yesterday, 7:22am")
    >>> d
    ((2014, 8, 25, 7, 22, 0, 0, 237, -1), 3)

    要将此日期表示形式d转换为datetime对象,可以这样解包元组:

    1
    2
    3
    >>> dt = datetime.datetime(*d[0][:7])
    >>> dt
    datetime.datetime(2014, 8, 25, 7, 22)

    现在,dt可以很容易地按照上面描述的方式转换为时间戳。


    您可以使用:

    1
    2
     a ="Thu 21st Aug '14, 4:58am"
     datetime.datetime.strptime(a, '%a %dst %b \'%y, %H:%M%p')