将字符串时间戳转换为Python日期时间(是:如何在Python中将char正确转换为float或double)

时间:2011-11-29 17:55:53

标签: python datetime unix-timestamp

这里我有这样的字符串"1322485986.672901000",数据类型是表示unixtime的字符串。我想在Python中将它转换为datetime。

我使用的方式是date = datetime.fromtimestamp(float(row[0])) row [0]表示像1322485986.672901000这样的值,因为我有几行。转换结果错误,它只计算点之前的数字。所以转换后的日期就像2011-11-28 13:53:23.6729

我认为问题是float(row[0]),但我不知道如何解决这个问题,或者有谁知道如何以更好的方式将unixtime转换为datetime?

非常感谢!

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

但使用在线转换器时,结果是2011-11-28 13:13:06

3 个答案:

答案 0 :(得分:4)

当前结果的一小时差异可能是时区应用的结果。

如果需要,您可以提供明确的时区 - tzinfo objects上的文档可以引导您直接创建时区对象,一旦创建,您只需传入参数:

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。

答案 1 :(得分: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

答案 2 :(得分: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)