python - Datetime Unix 时间戳包含毫秒

标签 python unix datetime

我有一个 unix 时间戳列表,它们都包含毫秒——它们有 13 位长。当我通过 datetime.fromtimestamp(unix_timestamp) 运行时间戳时,它返回一个 ValueError: Year Out of Range。当我从时间戳中删除最后三位数字并通过相同的格式转换器运行它时,它工作得很好。是否可以通过 datetime 的 fromtimestamp 方法运行包含毫秒的 Unix 时间戳而不引发 ValueError?我正在查看文档,但它没有说明任何关于指定毫秒的内容。

任何帮助都会很棒!

最佳答案

从文档中可以看出,Python 中的时间戳应该以秒为单位计算,而不是毫秒:http://docs.python.org/2/library/time.html#time.time

您可能已经了解过了。

虽然切掉时间戳的最后 3 位数字应该相当容易:

datetime.fromtimestamp(str(unix_timestamp)[0:-3])

您可能还希望进行一些字符串长度检查,以验证它们的长度是 13 位而不是 10 位:

if len(unix_timestamp) == 13:
    unix_timestamp = float(str(unix_timestamp)[0:-3])

datetime.fromtimestamp(unix_timestamp)

顺便说一下,在某些系统上,时间戳必须在 1970 - 2038 之间。这也可能导致 ValueError

如果你想保留毫秒,你可以像这样存储它们:

milliseconds = 0
if len(unix_timestamp) == 13:
    milliseconds = int(unix_timestamp[-3:])
    unix_timestamp = float(unix_timestamp[0:-3])

the_date = datetime.fromtimestamp(unix_timestamp)
the_date += timedelta(milliseconds=milliseconds)

关于python - Datetime Unix 时间戳包含毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18724037/

相关文章:

python - 针对小任意浮点值的 arcsin 函数的最快可能方法

bash - 无法在 shell 脚本中运行 ssh

mysql - 防止 MySQL 更改 DATETIME

javascript - HTML 日期 : Get Correct date in yyyy - mm - dd

linux - 在 Unix/Linux 中查找没有文件的目录

Java 日期验证 joda 时间

python - 使用 Opencv python 从图像中删除蒙版圆圈

python - pygtk:覆盖 gtk.Paned.compute_position

python - 如何更改 GTK 中的字体大小?

unix - Unix 中的 st_ino 是什么?