【问题标题】:Python difference between timezones时区之间的Python差异
【发布时间】:2015-07-13 08:04:09
【问题描述】:

我必须创建一个代码,它可以告诉我任何城市的当前时间(作为变量)并打印该时间与 utc 之间的 utc 偏移量。我已经有以下代码,它给出了当前时间和时区的偏移量,但这个时区并不总是 utc。注意:城市名称存储在文本文件中,用户应该能够添加和删除任何城市。我正在为 gui 使用 tkinter。

from datetime import datetime, timedelta
from pytz import timezone
import pytz

def tz():
    utc = pytz.utc
    amsterdam = timezone('Europe/Amsterdam')
    fmt = '%Y-%m-%d %H:%M:%S %Z%z'
    loc_dt = utc.localize(datetime.today())
    tz = loc_dt.astimezone(amsterdam)
    print(tz.strftime(fmt))

文件内容如下:

Amsterdam
Brasilia
Los Angeles
Abu Dhabi
Tokyo
Singapore

有人可以帮我写一个简单的代码吗?提前谢谢你

【问题讨论】:

  • 您说城市名称存储在文本文件中。该文件是否还包含每个城市的 UTC 偏移量,还是您希望自己计算出来?
  • 希望我们自己解决,文件只包含城市名称
  • 您能否向我们展示您拥有的带有城市名称的文本文件的摘录?
  • 是什么让您认为任意城市名称在全球范围内都是独一无二的?他们不是。例如:法国巴黎 vs 德克萨斯州巴黎。

标签: python datetime timezone python-3.2


【解决方案1】:

您已经在使用 pytz,所以我会选择:

from datetime import datetime
from pytz import timezone, all_timezones

def to_timezone(dt, tz):
  assert dt.tzinfo is not None
  assert tz in all_timezones
  return dt.astimezone(timezone(tz))

print to_timezone(datetime.now(timezone('UTC')), 'Europe/Amsterdam')

我默认设置为 UTC 但重点是:

  • 有一个非天真的日期时间
  • 转换它

【讨论】:

  • 我想我可以解决这个问题,谢谢,但还有一件事,它仍然打印 CEST+0200,它会一直是 CEST 还是有办法将其更改为 UTC?跨度>
  • 取决于你想要什么,如果你使用这个 to_timezone 函数,你会在你要求的时区拥有它,你可以再次使用它以通过这种方式在 utc 中拥有它: to_timezone(mycestdt,时区('UTC'))
猜你喜欢
  • 2018-09-16
  • 2018-12-18
  • 2011-01-23
  • 1970-01-01
  • 2012-10-31
  • 2012-04-09
  • 1970-01-01
  • 2016-08-16
  • 1970-01-01
相关资源
最近更新 更多