Python:带有 pytz 时区标志的奇怪行为

标签 python datetime pytz

我在阿根廷,我的时间是 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

这是一个错误吗?我做错了吗??

最佳答案

这不是一个错误,它是一个功能(Wikipedia: Tz_database):

Etc 的特殊区域用于某些行政区域,特别是表示协调世界时的“Etc/UTC”。为了符合 POSIX 风格,那些以“Etc/GMT”开头的区域名称的符号与大多数人期望的相反。在这种风格中,GMT 以西的区域名称中有一个正号,而东部的区域名称中有一个负号(例如,“Etc/GMT-14”比 GMT 早/东 14 小时。)

关于Python:带有 pytz 时区标志的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11670425/

相关文章:

python 字符串良好实践 : ' vs "

python - 在python中加入大量文件

javascript - 在 Javascript 中将 MySQL 时间戳转换为本地时间

sql - 如何在 SQL Server 中将 DateTime 值迁移到 DateTimeOffset?

python - pytz 和 Centos 以及 mysql - django

python - 从时区和 UTC 时间,获取该时间点与本地时间的秒数差异

python - DST 更改前后的日期和时区代码

python - Django 中的模型管理器 - 没有引用模型类?

perl - 为什么我的Time::Piece代码给出奇怪的结果?

python - 第一个 HTTPS 请求比其他请求花费更多时间