1

私はアルゼンチンにいます。時間は GMT-3 (http://wwp.greenwichmeantime.com/time-zone/south-america/argentina/) です。

私は Pytz で遊んでいて、奇妙なことに気付きました。

from pytz import timezone
bsas = timezone('America/Argentina/Buenos_Aires')

gmt_plus_3 = timezone('Etc/GMT+3')
gmt_min_3 = timezone('Etc/GMT-3')

# Date and time at this momement: 2012-07-26 10:23:01

fmt = '%Y-%m-%dT%H:%M:%S'
datetime.now(bs).strftime(fmt)  #'2012-07-26T10:23:01' <-- GOOD!

datetime.now(gmt_min_3).strftime(fmt)  #'2012-07-26T16:25:21' <-- WRONG!

datetime.now(gmt_plus_3).strftime(fmt)  #'2012-07-26T10:23:01' <-- GOOD! WTF!

私は期待します:

GMT-3 should be 10:23:01 and gives me 16:23:01
GMT+3 should be 16:23:01 and gives me 10:23:01

これはバグですか?私はそれを間違っていますか??

4

1 に答える 1

7

これはバグではなく、機能です ( Wikipedia: Tz_database ):

Etc の特別な領域は、一部の行政区域、特に協定世界時を表す「Etc/UTC」に使用されます。POSIX スタイルに準拠するために、「Etc/GMT」で始まるこれらのゾーン名は、ほとんどの人が期待するものとは符号が逆になっています。このスタイルでは、GMT の西のゾーンには正の符号が付けられ、東のゾーンには負の符号が付けられます (たとえば、「Etc/GMT-14」は GMT の 14 時間前/東です)。

于 2012-07-26T13:47:31.927 に答える