2017-06-08 16 views
2

タイムスタンプをunixtimeに変換しようとしていますが、UTCではなくunixtimeが間違っています。Python - UTCタイムスタンプをunixtimeに変換する

import time 
import datetime 
from dateutil.parser import parse 

time_str = '2017-03-09T15:44:40.000-05:00' 

time_obj = parse(time_str) 

print time_obj 

unixtime = time.mktime(time_obj.timetuple()) 

print unixtime 

それが返すunixtimeは私がしたいことは1489074280とき03/09/2017 @ 8:44pm (UTC)に表し1489092280.0です。

+0

'int(unixtime)'だけで動作しませんか? – Dadep

答えて

2

time.mktimeは、分解された現地時間を想定し、入力をそのまま扱います。つまり、UTCに変換してから、エポック秒後のタイムスタンプを作成します。あなたはすでに壊れてダウンUTC時間を持っているので、あなたの代わりにcalendar.timegmを呼び出す必要があります:

>>> unixtime = calendar.timegm(time_obj.timetuple()) 
>>> print unixtime 
1489074280 
0

私はあなたの結果が正しかったと信じています。 -05:00の15:44の時間帯は、UTCの20:44(つまり午後8:44)です。

関連する問題