将字符串时间戳转换为Python datetime
我这里有一个字符串,比如说 "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。