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

时间:2014-08-26 13:14:25

标签: python datetime timestamp

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

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

到Python的时间戳?

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

"Yesterday, 7:22am"

我尝试解析util没有成功......

2 个答案:

答案 0 :(得分:7)

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

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

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

>>> import time
>>> import datetime
>>> time.mktime(dt.timetuple())
1408593480.0

作为旁注,parse是一个有用的功能,可以识别各种不同的日期格式。但是,它有时有用,并且可能会看到可能不是日期的日期:

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

如果你还想解析诸如“昨天,早上7:22”之类的表达,你可以做以下两件事之一:

  1. 将“昨天”,“yester-day”,“yday”和其他变体替换为“25/08/2014”(或其他适当的日期),然后在新字符串上使用parse

  2. 使用另一个库来解析字符串。 parsedatetime是一种选择......

  3. 以下是您的示例中的解析时间:

    >>> 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对象,您可以像这样解压缩元组:

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

    现在dt可以通过上述方式轻松转换为时间戳。

答案 1 :(得分:0)

您可以使用:

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