我有一个包含时间戳的数据文件,例如“1331856000000”。不幸的是,我没有很多关于格式的文档,所以我不确定时间戳是如何格式化的。我已经尝试过 Python的标准datetime.fromordinal()和datetime.fromtimestamp()其他一些标准,但没有任何匹配项。我很确定该特定数字对应于当前日期(例如 2012-3-16),但仅此而已。
datetime.fromordinal()
datetime.fromtimestamp()
如何将此数字转换为datetime?
datetime
datetime.datetime.fromtimestamp()是正确的,除了你可能有以毫秒为单位的时间戳(如在 JavaScript 中),但fromtimestamp()需要 Unix 时间戳,以秒为单位。
datetime.datetime.fromtimestamp()
fromtimestamp()
这样做:
>>> import datetime >>> your_timestamp = 1331856000000 >>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
结果是:
>>> date datetime.datetime(2012, 3, 16, 1, 0)
它回答了你的问题吗?
编辑 :JF Sebastian 正确地建议 使用真正的除法 (1e3浮点数1000)。如果您想获得精确的结果,差异很大,因此我改变了答案。差异源于 Python 2.x 的默认行为,int当将(使用/运算符)int除以int(这称为 floor division )时,它总是返回。通过用除数(表示为浮点数)或(或等)替换除数1000(作为一个int),除法变为 真正的除法 。Python 2.x除以, by ,时返回1e3``1000``float(1000)``1000. __float``int``float``float``int``float等等。float当传递给fromtimestamp()方法的时间戳中有一些小数部分时,此方法的结果还包含有关该小数部分的信息(作为微秒数)。
1e3
1000
int
/
1e3``1000``float(1000)``1000.
float``int``float``float``int``float
float