这里我有这样的字符串"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
答案 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)