我想知道如何转换这种日期格式
"Thu 21st Aug '14, 4:58am"
到 Python 的时间戳?
我需要转换的另一种格式:
"Yesterday, 7:22am"
我尝试了 parse util 但没有成功...
最佳答案
如果您还没有这样做,请查看 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)
如果您还想解析诸如“Yesterday, 7:22am”之类的表达式,您可以执行以下两种操作之一:
将“yesterday”、“yester-day”、“yday”和其他变体替换为“25/08/2014”(或其他合适的日期),然后使用
parse
新字符串。使用另一个库来解析字符串。 parsedatetime是一种选择...
这是对您的示例执行的 parsedatetime:
>>> 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
可以很容易地按照上述方式转换为时间戳。
关于Python:将复杂的日期和时间字符串转换为时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25506772/