0

タイムスタンプをvarbinary列に格納するmysqlデータベースがあり、これをUNIXタイムスタンプに変換して、2つのタイムスロット間で経過時間を実行できるようにすることを目標としています。

+---------+------------+-------------------+----------------+--------------------------+
| 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"

Timedeltaの詳細については、Pythonの公式ドキュメントをご覧ください。

于 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 に答える