Python:将Varbinary类型时间戳转换为Unix时间戳
我有一个MySQL数据库,它把时间戳存储在一个叫做varbinary的列里。我的目标是把这个时间戳转换成Unix时间戳,这样我就可以计算两个时间段之间的时间差。
+---------+------------+-------------------+----------------+--------------------------+
| some_id | some_name | user_registration | some_count | some_value_yes_no |
+---------+------------+-------------------+----------------+--------------------------+
| some_id | some_user | 20091129060140 | 2685 | 1 |
+---------+------------+-------------------+----------------+--------------------------+
这里的user_registration是MySQL中的varbinary(14)。假设我已经连接上数据库并提取了这些数据,现在我在Python中把user_registration存储在一个变量里。
...
timestamp = row['user_registration']
我该如何把这个变量转换成Unix时间戳,这样我就可以和另一个时间戳进行时间差的计算呢?我查看了http://docs.python.org/2/library/datetime.html,但没找到类似的例子。
3 个回答
0
如果你得到一个字符串,它会是这样的:
from datetime import datetime
datetime.strptime(timestamp, '%Y%m%d%H%M%S');
1
在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够好,或者是我们对某些概念理解得不够透彻。比如,有人可能在使用某个库的时候,发现它的功能和自己想的不一样,这时候就需要去查找资料,看看别人是怎么解决类似问题的。
在社区里,比如StackOverflow,大家会分享自己的经验和解决方案。你可以看到很多人提问,也有很多人回答,这样就形成了一个互帮互助的环境。对于初学者来说,看到这些讨论可以帮助你更好地理解编程的各种细节。
总之,编程是一门需要不断学习和实践的技能,遇到问题时不要气馁,多去查阅资料和请教他人,慢慢你就会变得更加熟练。
>>> import time
>>>
>>> date_str = "20091129060140"
>>> time_tuple = time.strptime(date_str, "%Y%m%d%H%M%S")
>>> timestamp = time.mktime(time_tuple)
>>>
>>> print timestamp
1259470900.0
3
你可以先把它转换成一个日期时间对象,然后再用时间模块把它转成Unix时间。
import datetime
import time
user_reg_time = datetime.datetime.strptime("20091129060140", "%Y%M%d%H%m%S")
epochs_time = time.mktime(user_time_reg.timetuple())
顺便说一下,如果你只是想比较时间,其实不需要转换成Unix时间;Python有一个内置的“timedelta”对象。这样也可以:
import datetime
import time
user_reg_time = datetime.datetime.strptime("20091129060140", "%Y%M%d%H%m%S")
if datetime.datetime.now() - user_reg_time > datetime.timedelta(weeks=4):
print "User was registered more than 4 weeks ago"
你可以在Python官方文档上获取更多关于timedelta的信息。