【发布时间】:2021-01-28 15:39:17
【问题描述】:
我没有使用时间戳的经验。我开始分析包含时间戳列的新数据帧,例如:time= 1599091199986769056。我想将一列时间戳转换为日期和时间。所以我尝试了以下一行:
ts = int("1599091199986769056")
print(datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))
但我收到以下错误:
----> 1 次打印(datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))
OSError: [Errno 22] 无效参数
谁能告诉我我做错了什么以及如何将列从时间戳转换为日期时间?
【问题讨论】:
-
您是否有任何迹象表明时间戳采用什么格式和/或您对它的期望值大致是多少?它绝对不是标准的 UNIX 时间戳以秒为单位,也不是毫秒。您必须至少除以 100000000 才能获得可用的 UNIX 时间戳。
-
通过查看时间戳值,似乎有格式问题。允许的最大值为 32536799999 - stackoverflow.com/q/46133223/13640294
-
似乎是纳秒;所以使用
ts/1e9作为fromtimestamp的输入。顺便说一句。尝试not to use utcfromtimestamp 以避免混淆。 -
既然你提到了时间戳列 - 你在使用
pandas吗?如果是这样,您可以使用pd.to_datetime轻松地将保存纳秒时间戳的列转换为日期时间。参见例如here,只需省略unit关键字,因为纳秒是默认值。
标签: python dataframe datetime python-datetime