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

标签 python datetime timestamp

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

"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”之类的表达式,您可以执行以下两种操作之一:

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

  2. 使用另一个库来解析字符串。 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/

相关文章:

python - 使 turtle 图形内联

python - 将一个数据帧的列乘以另一个数据帧的值,由键确定

sql - ORA-01843 : not a valid month error when using to_date function

python - 正在解决 ValidationError : [u "'' value has an invalid date format. 它必须采用 YYYY-MM-DD 格式。”] 在 Django 1.9.2 中?

python - 如何在 Python 中以毫秒为单位获取当前时间?

python - 如何调试 python import not found 错误?

python - 从可比较的、不可散列的项目列表中删除重复项的最快方法

actionscript-3 - ActionScript 3/Flash : Basic Game Loop Stuttering Problems

MySQL:如何获得实际的时间戳?从字面上看,自 1970-01-01 UTC 以来的秒数

postgresql - 使用 to_timestamp 函数解析 Twitter 时间戳时出现问题