0

Python プログラムの実行中にコンピューターのタイムゾーンを変更すると、プログラムを再起動しない限り、そのプログラムは計算と変換に古いタイムゾーンを使用し続けます。

これにより、Windows などでローカル タイムを使用するコマンドの出力を解析する場合などに問題が発生しnet stats svrます。このような解析された現地時間を Unix タイムスタンプに変換time.mktime(local_naive_datetime.timetuple())すると、ローカル時間が古いタイムゾーンにあると想定されるため、プログラムを再起動しない限り、誤ったタイムスタンプが返されます。

この問題を示す簡単な例: を呼び出しdatetime.datetime.now()、システムのタイムゾーンを変更し、関数を再度呼び出します。2 番目の呼び出しは、古いタイムゾーンで現地時間を返します。

長時間実行されるスクリプトを再起動せずにシステムのタイムゾーンを再確認するように Python に指示するために使用できる関数またはその他の方法はありますか?

Windows 7 で Python 2.7.3 を実行しています。

4

2 に答える 2

0

このコードは、変更を検出するために機能しました。ただし、正確には生産品質ではありません。

import os
import time
print(time.ctime(time.time()))
inp = input('change time and press enter')
f = open('newtimezone','w')
f.close()
print(time.ctime(os.stat('newtimezone').st_mtime))
于 2013-02-22T11:17:54.970 に答える
0

はい、機能があります。を呼び出し て、タイム ゾーン情報を取得するためにtime.tzset() 使用できます。time.tzname

http://docs.python.org/2/library/time.html#time.tzsetをご覧ください。

于 2013-02-22T11:07:28.187 に答える