DB からの辞書があり、create_dt と install_ts が一致することがわかっています。
untimed = {'install_id': 399142, 'create_dt': datetime.datetime(2013, 7, 7, 0, 33, 2), 'install_ts': 1373157182}
そして、次のコードを実行するとQAですべてが正しい
>>(mktime(untimed['create_dt'].timetuple()) - untimed['install_ts']) / 3600
0.0
しかし、ラップトップでローカルに実行すると、(ローカルで私は PST にいます)
>>(mktime(untimed['create_dt'].timetuple()) - untimed['install_ts']) / 3600
7.0
同じタイムスタンプを取得できないのはなぜですか? create_dt が UTC であることはわかっていますが、ローカルでは強制的に PST (-700) になっています。
注:問題をこれに絞り込みましたが、完全な問題は、試したときに間違ったタイムスタンプを取得していることです
mktime(datetime.strptime(install['click_date'],'%Y-%m-%d %H:%M:%S').timetuple())
より具体的には、strftime を使用して python datetime をエポックに変換する理由
>>> datetime.datetime(2012,04,01,0,0).strftime('%s') # This is equivalent to my issues above
'1333234800'
>>> (datetime.datetime(2012,04,01,0,0) - datetime.datetime(1970,1,1)).total_seconds()
1333238400.0
異なる値を与える?