将字符串时间戳转换为Python datetime

1 投票
3 回答
7934 浏览
提问于 2025-04-17 07:20

我这里有一个字符串,比如说 "1322485986.672901000",它的类型是字符串,表示的是 Unix 时间戳。我想把它转换成 Python 中的日期时间。

我用的方法是 date = datetime.fromtimestamp(float(row[0])),其中 row[0] 就是像 1322485986.672901000 这样的值,因为我有好几行数据。转换的结果是错误的,它只计算了小数点前的数字。所以转换后的日期看起来像 2011-11-28 13:53:23.6729。

我觉得问题出在 float(row[0]) 上,但我不知道该怎么解决这个问题,或者有没有人知道更好的方法把 Unix 时间戳转换成日期时间?

非常感谢!

现在我得到的结果是 2011-11-28 14:13:06.672901。

但是当我使用在线转换器时,得到的结果是 2011-11-28 13:13:06。

3 个回答

0
# timestamp to time tuple in UTC
    timestamp = 1226527167.595983
    time_tuple = time.gmtime(timestamp)
    print repr(time_tuple)

# timestamp to time tuple in local time
    timestamp = 1226527167.595983
    time_tuple = time.localtime(timestamp)
    print repr(time_tuple)

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

3
from datetime import datetime

timestamp = "1322485986.672901000"

d1 = datetime.fromtimestamp( float(timestamp) )
print d1

d2 = datetime.fromtimestamp( int(float(timestamp) ) )
print d2

输出:

2011-11-28 05:13:06.672901
2011-11-28 05:13:06
4

你现在结果中的一小时差异,很可能是因为时区的设置导致的。

如果你需要的话,可以明确指定一个时区——关于如何创建时区对象的详细说明,可以参考tzinfo对象的文档。一旦你创建了时区对象,就可以把它作为参数传入:

from datetime import datetime, tzinfo, timedelta

timestamp = "1322485986.672901000"

class UTC(tzinfo):
    def utcoffset(self, dt):
         return timedelta(0)
    def tzname(self, dt):
        return "UTC"
    def dst(self, dt):
        return timedelta(0)


d1 = datetime.fromtimestamp(float(timestamp), UTC())
print d1

这段代码对我来说会输出2011-11-28 13:13:06.672901+00:00。

撰写回答