2013-02-28 252 views
0

我有一個mysql數據庫,它將時間戳存儲在varbinary列中,我的目標是將其轉換爲unix時間戳,以便我可以在兩個時間間隔之間執行一段時間。Python:將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),假定連接並提取該數據後,我已經存儲在從蟒側可變的user_registration,

... 
    timestamp = row['user_registration'] 

我怎樣才能轉換此到一個unix時間戳,所以我可以做一個這樣的另一個時間戳之間的時間差。我看着http://docs.python.org/2/library/datetime.html,但我找不到任何這樣的例子。

回答

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

+0

我需要做兩個時隙,其中兩個時隙都像我剛纔提到,並希望在幾天之差 – 2013-02-28 10:16:17

+1

轉換之間的時間差其他時間也可以使用strptime。然後減去它們並使用datetime.timedelta(days = ...)進行比較 – sharjeel 2013-02-28 10:21:18

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 
0

如果你得到的字符串這將是如下:

from datetime import datetime 
datetime.strptime(timestamp, '%Y%m%d%H%M%S');