0

我有一个将时间戳存储在 varbinary 列中的 mysql 数据库,我的目标是将其转换为 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),假设在连接并提取这些数据后,我将 user_registration 存储在 python 端的一个变量中,

...
    timestamp = row['user_registration']

如何将其转换为 unix 时间戳,以便我可以在另一个时间戳之间进行时间差。我查看了http://docs.python.org/2/library/datetime.html但我找不到任何这样的例子。

4

3 回答 3

3

您可以先将其转换为 datetime 对象,然后使用 time 模块转换为 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的更多信息。

于 2013-02-28T10:08:43.983 回答
1
>>> 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
于 2013-02-28T09:59:51.127 回答
0

如果你得到字符串,它将如下所示:

from datetime import datetime
datetime.strptime(timestamp, '%Y%m%d%H%M%S');
于 2013-02-28T10:18:36.350 回答