2011-03-22 14 views
0

私はいくつかのPythonスクリプトを使って、古い日付からの経過時間を計算していましたが、驚くべきことに否定的な結果が得られました。私は問題がtime.mktime機能にあるかもしれないことに気づいた。私のLinuxの32ビットのPython 2.6.4でPython:異なる日付に同じ値を返すtime.mktime

import time 
import datetime 

before = datetime.datetime(2010, 10, 17, 0, 0, 0) 
after = datetime.datetime(2010, 10, 17, 1, 0, 0) 

print "%s = %f" % (before, time.mktime(before.timetuple())) 
print "%s = %f" % (after, time.mktime(after.timetuple())) 

、出力は次のとおりです:のは、このコードを取得してみましょう

2010-10-17午前0時00分00秒= 1287284400.000000
2010-10 -17 01:00:00 = 1287284400.000000

異なる時刻の同じタイムスタンプ! 何か間違っていますか?

+0

は、私は、Python 2.6.5に異なるものを得る: 2010-10-17午後12時00分○○秒= 1287273600.000000〜 2010-10-17午前1時00分00秒= 1287277200.000000 –

+0

@マークお使いのシステムは何ですか?私はLinux 32 Python 2.6.5を試しましたが、どちらの日付にも1287284400.000000が残っています。 –

+0

私はIgnacio Vazquez-Abramsの答えがあなたの解決策だと思います。 –

答えて

1

mktimeは、システムロケールに該当する場合は、夏時間を使用して現地時間を表します。これはいくつかの奇妙な行動につながる可能性があります。

calendar.timegmが好きかもしれませんが、それはあなたにUTC時間を与えます。

関連する問題