首页 > 解决方案 > 将 UNIX 时间从纳秒转换为秒

问题描述

我正在以纳秒格式的 UNIX 时间服务中的字符串形式读取时间戳。这引入了一个明显的问题,因为考虑到字符串的大小,我无法执行标准操作将字符串标准化为秒。这些字符串之一的示例是'1589212802642680000'科学记数法中的或 1.58921E+18。

我正在尝试这样的事情:convert_fills_df['timeStamp'] = convert_fills_df.timeStamp.apply(lambda x: UNIX_EPOCH + (float(x)/1000000000))。但是当我尝试这个时,我溢出了浮动对象;有没有我可以做的字符串操作而不会丢失精确到秒?就我的目的而言,纳秒是不必要的(尽管我很欣赏它们的彻底性)。如果我能保持纳秒级也很好,但这不是必需的。

我只想将时间转换为 24 小时制格式的人类可读格式。

标签: python-3.xunix-timestamp

解决方案


前 10 位数字代表秒,后面的数字代表毫秒、微秒和纳秒精度

要保留您可以.在正确位置插入的所有信息,并将字符串传递给 pd.to_datetime

df = pd.DataFrame({'ns': ['1589212802642680000']}) 
pd.to_datetime(df.ns.str[:10] + '.' + df.ns.str[10:], unit='s')
# outputs
0   2020-05-11 16:00:02.642679930
Name: ns, dtype: datetime64[ns]

推荐阅读