我在阿根廷,我的时间是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
这是一个错误吗?我做错了吗?
答案 0 :(得分:7)
这不是一个错误,它是一个功能(Wikipedia: Tz_database):
Etc的特殊区域用于某些管理区域,特别是代表协调世界时的“Etc / UTC”。为了符合POSIX风格,那些以“Etc / GMT”开头的区域名称与大多数人的期望相反。。在这种风格中,格林威治标准时间以西的区域有一个正号,东方的名称有一个负号(例如“Etc / GMT-14”比格林威治标准时间提前14小时。)