【问题标题】:Python: Weird behavior with signs of pytz timezonesPython:带有 pytz 时区迹象的奇怪行为
【发布时间】:2012-07-25 02:32:55
【问题描述】:

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

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

【问题讨论】:

  • 提示:使用.isoformat() 将您的日期时间对象格式化为 IS 8601 字符串,而不是使用显式格式化程序。
  • @MartijnPieters - 不幸的是,这并没有带来什么。我得到了同样的结果。
  • 对不起,不,我不知道这里发生了什么,只是评论一下你对strftime的使用。

标签: python datetime pytz


【解决方案1】:

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

Etc 的特殊区域用于一些行政区域,特别是代表协调世界时的“Etc/UTC”。为了符合 POSIX 风格,那些以“Etc/GMT”开头的区域名称其符号与大多数人的预期相反。在这种风格中,格林威治标准时间以西的区域带有正号,东部的区域名称中带有负号(例如,“Etc/GMT-14”是格林威治标准时间之前/东部的 14 小时。)

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 2021-09-19
    • 1970-01-01
    相关资源
    最近更新 更多