如何将整数时间戳转换为日期时间
- 2025-02-18 09:23:00
- admin 原创
- 119
问题描述:
我有一个包含时间戳的数据文件,例如“1331856000000”。不幸的是,我没有很多关于这种格式的文档,所以我不确定时间戳是如何格式化的。我尝试了 Python 的标准格式datetime.fromordinal()
和datetime.fromtimestamp()
其他一些格式,但没有一个匹配。我很确定那个特定的数字对应于当前日期(例如 2012-3-16),但仅此而已。
我如何将这个数字转换为datetime
?
解决方案 1:
datetime.datetime.fromtimestamp()
是正确的,除非你有以毫秒为单位的时间戳(就像在 JavaScript 中一样),但fromtimestamp()
需要以秒为单位的 Unix 时间戳。
这样做:
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
结果是:
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
它回答了你的问题吗?
编辑:jfs在现已删除的评论中正确建议使用真正的除法1e3
(浮点数)1000
。如果您想获得精确的结果,差异是显著的,因此我改变了我的答案。差异源于 Python 2.x 的默认行为,它在除以(使用运算符)时始终返回(int
这/
称为向下取整除法)。通过将除数(为)替换为除数(表示为浮点数)或替换为(或等),除法变为真正的除法。Python 2.x在除以、除以、除以等时返回。并且,当传递给方法的时间戳中包含一些小数部分时,此方法的结果还包含有关该小数部分的信息(以微秒数表示)。int
`int1000
int1e3
1000float(1000)
1000.float
intfloat
floatint
floatfloat
fromtimestamp()`
解决方案 2:
或者,您可以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')
解决方案 3:
类似于@Tadek 的回答
如果时间戳采用 UTC 时区(存储日期的常用方法),则应使用
datetime.datetime.utcfromtimestamp()
如果你使用fromtimestamp
它将假定日期以你的当地时区表示
解决方案 4:
要将整数秒转换为字符串日期和时间,可以使用以下方法:
import time
time.strftime('%d:%m:%Y,%H:%M:%S', time.gmtime(13318560000))
输出:'19:01:2392,00:00:00'
扫码咨询,免费领取项目管理大礼包!