0

古い日付以降に費やされた時間を計算するためにいくつかの 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()))

私の Linux 32 ビット Python 2.6.4 では、出力は次のようになります。

2010-10-17 00:00:00 = 1287284400.000000
2010-10-17 01:00:00 = 1287284400.000000

異なる時間の同じタイムスタンプ! 私は何か間違ったことをしていますか?

4

2 に答える 2

6

いいえ。ブラジルの DST は2010 年 10 月 17 日に開始されたため、1 時間が不足しています。

于 2011-03-22T14:38:30.580 に答える
1

mktime は、システム ロケールに適用可能な場合は夏時間を使用して、現地時間の表現を提供することに注意してください。これにより、いくつかの奇妙な動作が発生する可能性があります。

UTC時間を提供するcalendar.timegmを好むかもしれません。

于 2011-03-22T14:40:27.647 に答える