1

それは「2013-02-27 11:02」(GMT) 頃で、私はフランスにいるので、現地時間は「2013-02-27 12:02 +0100」頃です。マシンで次のコマンドを実行しました。

Python 2.6.8 (unknown, Apr 14 2012, 04:15:37) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> datefmt = '%Y-%m-%d %H:%M:%S %Z'
>>> paris_time = (time.gmtime(), time.localtime())
>>> paris_time[0]
time.struct_time(tm_year=2013, tm_mon=2, tm_mday=27, tm_hour=11, tm_min=2, tm_sec=2, tm_wday=2, tm_yday=58, tm_isdst=0)
>>> paris_time[1]
time.struct_time(tm_year=2013, tm_mon=2, tm_mday=27, tm_hour=12, tm_min=2, tm_sec=2, tm_wday=2, tm_yday=58, tm_isdst=0)
>>> time.strftime(datefmt, paris_time[0]), time.strftime(datefmt, paris_time[1])
('2013-02-27 11:02:02 CET', '2013-02-27 12:02:02 CET')
>>> 

次に、マシンのタイムゾーンを「ニューヨーク」に変更し、最後のコマンドを再生しました。

>>> paris_time[0]
time.struct_time(tm_year=2013, tm_mon=2, tm_mday=27, tm_hour=11, tm_min=2, tm_sec=2, tm_wday=2, tm_yday=58, tm_isdst=0)
>>> paris_time[1]
time.struct_time(tm_year=2013, tm_mon=2, tm_mday=27, tm_hour=12, tm_min=2, tm_sec=2, tm_wday=2, tm_yday=58, tm_isdst=0)
>>> time.strftime(datefmt, paris_time[0]), time.strftime(datefmt, paris_time[1])
('2013-02-27 11:02:02 EST', '2013-02-27 12:02:02 EST')
>>> 

情報: CET は +0100 のコードで、EST は -0500 のコードです。

python time.strftime(format[, t])ドキュメントの表には、次のように記載されています。

%Z タイム ゾーン名 (タイム ゾーンが存在しない場合は文字なし)。

「タイムゾーンが存在しない」とはどういう意味ですか? struct_time オブジェクトのタイム ゾーン(編集: 最初に質問で「strftime オブジェクト」と書きました) またはシステムで ? 私のテストによると、オブジェクト paris_time[x] にタイムゾーンが設定されていませんが、タイムゾーンが表示されています。それで、私はここで何が欠けていますか?

4

1 に答える 1

1

Pythonの日付ルーチンは、(1)混乱を招き、(2)システムコールの薄いラッパーです。

私の(Linux)マシンでは、Pythonルーチンがおそらくラップman strftimeするシステムコールに関する情報を表示します。strftimeそこには、システムTZが使用されていると書かれています。これはtzsetで変更できます。

「タイムゾーンが存在しない」限り、システムTZが設定されていないことを意味すると思います。

(そして、これがWindowsにどのように伝わるのかわかりません。)

于 2013-02-27T12:34:18.830 に答える