2012-01-26 23 views
3

終了時刻のイベントをfacebookからUTC形式で取得するのに問題があります。Facebookのイベントの開始時刻と終了時刻をUTCに換算する

私は、イベントを取得するために、これらのクエリを実行している、FacebookのPythonライブラリを使用しています:

fb_events = graph.get_connections(fb_user["id"], "events", args=["date_format=U"]) 
for item in fb_events['data']: 
    curr_event = graph.get_object(item['id'], args=["date_format=U"]) 

私が実際に開始時刻と終了時刻を含むイベントを取得する場所のコードの最後の行があります。 arg:"date_format=U"は、Unix時間の時刻形式を既にUTCで指定しているはずですが、このコードは通常のFacebookタイムスタンプを現地時間で返します。

どのようにしてこの情報をUTC時間に取得できますか、ある種の時間帯に亘って一貫していますか?

ありがとうございます!

+0

Unixの時間のhttp://pytz.sourceforge.net/

別の例は、UTCではありません、うるう秒がない場合は、お互いを追跡します。 –

答えて

2

次は、変換を行うために役立つかもしれない:

import pytz, datetime, time 
import os 

originalTimeStamp = os.stat("/tmp/file-from-us-west-coast").st_mtime 

# prints e.g. 2010-03-31 13:01:18 
print "original:",datetime.datetime.fromtimestamp(originalTimeStamp) 

# re-interpret 
originalTimeZone = "America/Los_Angeles" 
targetTimeZone = "Europe/Paris" 

newTimeStamp = pytz.timezone(originalTimeZone).localize(datetime.datetime.fromtimestamp(originalTimeStamp)).astimezone(pytz.timezone(targetTimeZone)) 

# prints e.g. 2010-03-31 22:01:18+02:00 
print "new:  ",newTimeStamp 

# convert back to seconds since epoch 
newTimeStamp = time.mktime(newTimeStamp.timetuple()) 

# print time difference in hours 
print (newTimeStamp - originalTimeStamp)/3600.0 

は、詳細については、このリンクを参照してください:コード

from datetime import * 
from pytz import timezone 
import pytz 

[...] 

if (not isinstance(pacificTime, int)): 
    pacificTime = int(pacificTime) 
originalTimeZone = "America/Los_Angeles" 
print datetime.fromtimestamp(pacificTime, pytz.timezone(originalTimeZone)) 
関連する問題