Cer*_*rin 161 python datetime timestamp
我有一个包含时间戳的数据文件,如"1331856000000".不幸的是,我没有很多关于格式的文档,所以我不确定时间戳是如何格式化的.我已经尝试过Python的标准datetime.fromordinal()和datetime.fromtimestamp()其他一些标准,但没有任何匹配.我很确定特定的数字对应于当前日期(例如2012-3-16),但不是更多.
如何将此数字转换为datetime?
Tad*_*eck 286
datetime.datetime.fromtimestamp()是正确的,除了你可能有几百毫秒的时间戳(如在JavaScript中),但fromtimestamp()需要Unix时间戳,以秒为单位.
这样做:
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
Run Code Online (Sandbox Code Playgroud)
结果是:
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
Run Code Online (Sandbox Code Playgroud)
它能回答你的问题吗?
编辑:JF塞巴斯蒂安正确建议使用真司的1e3(浮动1000).差异很大,如果你想获得精确的结果,那么我改变了我的答案.差异来自Python 2.x的默认行为,它int在将(使用/运算符)int除以int(这称为floor division)时总是返回.通过更换除数1000(作为一个int与所述)1e3除数(即的表示1000为float)或用float(1000)(或1000.等),分割变得真正分裂.Python 2.x float在intby float,floatby int,floatby float等时返回.当传递给fromtimestamp()方法的时间戳中有一些小数部分时,此方法的结果还包含有关该小数部分的信息(以微秒数表示).
My *_*ork 14
或者,您可以使用pandas.to_datetime并选择适合自己的单位以及时区。这避免了之前答案中提到的所有评论和问题:
import pandas as pd
pd.to_datetime(int('1331856000000'), utc=True, unit='ms')
# Timestamp('2012-03-16 00:00:00+0000', tz='UTC')
Run Code Online (Sandbox Code Playgroud)
类似于@Tadek 的回答
如果时间戳采用 UTC 时区(存储日期的常见方式),您应该使用
datetime.datetime.utcfromtimestamp()
Run Code Online (Sandbox Code Playgroud)
如果您使用fromtimestamp它将假定日期以您当地的时区表示
| 归档时间: |
|
| 查看次数: |
199306 次 |
| 最近记录: |