web-dev-qa-db-ja.com

PythonでdatetimeをUnixタイムスタンプに変更します

日時オブジェクトの変更を手伝ってください(例:2011-12-17 11:31:00-05:00)(タイムゾーンを含む)からUnixタイムスタンプ(Pythonの関数time.time()など)。

22
Thelinh Truong

別の方法は次のとおりです。

import calendar
from datetime import datetime
d = datetime.utcnow()
timestamp=calendar.timegm(d.utctimetuple())

タイムスタンプは、日付オブジェクトdと同じ日付を示すUNIXタイムスタンプです。

14
Shnkc
import time

import datetime

dtime = datetime.datetime.now()

ans_time = time.mktime(dtime.timetuple())
12
user2673780

不完全な回答(タイムゾーンを処理しません)、しかしうまくいけば便利です:

time.mktime(datetime_object.timetuple())

**次のコメントに基づいて編集**

私のプログラムでは、ユーザーは日時を入力し、タイムゾーンを選択します。 ...タイムゾーンリストを作成し(pytz.all_timezonesを使用)、ユーザーがそのリストから1つのタイムゾーンを選択できるようにします。

Pytzモジュールは必要な変換を提供します。例えば。 dtdatetimeオブジェクトであり、ユーザーが「US/Eastern」を選択した場合

import pytz, calendar
tz = pytz.timezone('US/Eastern')
utc_dt = tz.localize(dt, is_dst=True).astimezone(pytz.utc)
print calendar.timegm(utc_dt.timetuple())

引数is_dst=Trueは、夏時間の終了時の1時間間隔のあいまいな時間を解決することです(こちらを参照してください http://pytz.sourceforge.net/#problems-with-localtime )。

6
DS.