python 如何将integer timestamp转换为datetime

9rbhqvlz  于 2023-06-04  发布在  Python
关注(0)|答案(5)|浏览(123)

我有一个包含时间戳的数据文件,如“1331856000000”。不幸的是,我没有太多关于该格式的文档,所以我不确定时间戳是如何格式化的。我试过Python的标准datetime.fromordinal()datetime.fromtimestamp()以及其他一些,但没有匹配的。我很确定那个特定的数字对应于当前的日期(例如:2012-3-16),但不是更多。
如何将这个数字转换为datetime

hgc7kmma

hgc7kmma1#

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(float 1000)。如果你想得到精确的结果,差异是显著的,因此我改变了我的答案。这种差异是由Python 2.x的默认行为造成的,当用/运算符将int除以int时,它总是返回int(这被称为 floor division)。通过用1e3除数(将1000表示为浮点数)或float(1000)(或1000.等)替换除数1000(是int),除法变为 * 真除法 *。Python 2.x在将int除以floatfloat除以intfloat除以float等时返回float。当传递给fromtimestamp()方法的时间戳中有小数部分时,该方法的结果也包含有关该小数部分的信息(以微秒数表示)。

g6ll5ycj

g6ll5ycj2#

或者,您可以使用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')
mrzz3bfm

mrzz3bfm3#

类似于@Tadek回答
如果时间戳是UTC时区(一种存储日期的常用方法),则应使用

datetime.datetime.utcfromtimestamp()

如果您使用fromtimestamp,它将假定日期以您的本地时区表示

sf6xfgos

sf6xfgos4#

要在Python中将整数时间戳转换为日期时间对象,可以使用datetime模块。但是,您提供的时间戳似乎是以毫秒为单位的,这不是标准的Unix时间戳格式。
要将给定的时间戳转换为datetime对象,需要将其除以1000以将其转换为秒。下面是一个如何实现此目标的示例:

from datetime import datetime

timestamp = 1331856000000  # Assuming the timestamp is in milliseconds

# Convert the timestamp to seconds
timestamp_seconds = timestamp / 1000

# Create a datetime object from the timestamp
dt = datetime.fromtimestamp(timestamp_seconds)

print(dt)

在本例中,timestamp变量表示给定的时间戳(以毫秒为单位)。我们将其除以1000,将其转换为秒。然后,使用datetime模块的fromtimestamp()方法,我们从时间戳创建一个datetime对象(dt)。最后,我们打印datetime对象。
请记住,这假设时间戳是UTC。如果时间戳位于不同的时区,您可能需要考虑调整时区差异。
通过运行上面的代码,您应该看到转换后的datetime对象被打印出来,它表示基于给定时间戳的相应日期和时间。

pnwntuvh

pnwntuvh5#

要将整数秒转换为字符串日期和时间,可以使用以下命令:

import time
time.strftime('%d:%m:%Y,%H:%M:%S', time.gmtime(13318560000))

输出:'19:01:2392,00:00:00'

相关问题