【问题标题】:Python get current time in right timezone [duplicate]Python在正确的时区获取当前时间[重复]
【发布时间】:2014-11-08 08:30:13
【问题描述】:

我现在用

import datetime
print(datetime.datetime.now().strftime("%X"))

将当前时间显示为字符串。
问题是,我的电脑运行在Europe/Berlin 时区,这里没有考虑到+2 到UTC 的偏移量。 它应该显示 21:22:26 而不是 19:22:26 也不同于我在这里找到的其他答案,我不通过调用来存储它

datetime.datetime(2014, 7, 10, 18, 44, 59, 193982, tzinfo=<UTC>)

但是

datetime.datetime.now()

所以我尝试了以下方法(但失败了):

>>> from pytz import timezone
>>> datetime.datetime.now().astimezone(timezone('Europe/Berlin'))
 ValueError: astimezone() cannot be applied to a naive datetime


编辑:

回答

无法作为答案发布,因为此问题已标记为已关闭

我遇到此问题的服务器不再存在。 不管怎样,这里还有一些值得检查的地方:

  • 您的服务器/系统的时区设置是否正确?
    • VM 或 docker 容器可能与主机不同步,这值得检查。
  • 那台计算机上的时间是否正确?您不是在更改时区后 +2 小时结束了吗?

【问题讨论】:

  • 你得到了什么输出?
  • @champion-runner 上面我已经导入的那个?
  • 这是另一个问题的副本,尽管只有在这里,我找到了普通的 pytz 解决方案。由于季节性时移,另一个答案只是让我确信根本不使用任何本地时间和 pytz 。但是对于真正只想​​显示该地点当前时间的人来说,为什么不在这里使用这种 pytz 方式呢?重新打开?

标签: python time timezone


【解决方案1】:

获取本地时区的当前时间作为一个简单的日期时间对象:

from datetime import datetime
naive_dt = datetime.now()

如果它没有返回预期的时间,则表示您的计算机配置错误。你应该先修复它(它与 Python 无关)。

以 UTC 格式获取当前时间作为原始日期时间对象:

naive_utc_dt = datetime.utcnow()

在 Python 3.3+ 中将当前时间作为可感知的日期时间对象获取:

from datetime import datetime, timezone

utc_dt = datetime.now(timezone.utc) # UTC time
dt = utc_dt.astimezone() # local time

从 tz 数据库中获取给定时区的当前时间:

import pytz

tz = pytz.timezone('Europe/Berlin')
berlin_now = datetime.now(tz)

它在 DST 转换期间工作。如果时区在过去有不同的 UTC 偏移量,它就可以工作,即,即使时区在不同时间对应于多个 tzinfo 对象,它也可以工作。

【讨论】:

  • pytz 现在已弃用。 ZoneInfo 在基础库中,是首选路线。示例:datetime.datetime.now(ZoneInfo("Europe/Amsterdam"))
  • @AlexanderKellett:我没有看到 pytz 被弃用 (the latest release is Feb 1, 2021) pytz 是一个久经考验的库,在复杂的极端情况下具有已知的行为。还有多个其他时区库具有不同的权衡(例如,正确性与易用性与性能)。现在,将 tz (zoneinfo) 库放在 stdlib 中非常棒,如果它适用于您的用例,请使用它。
  • If it doesn't return the expected time then it means that your computer is misconfigured。什么是托管在某个远程服务器上的程序?那么datetime.now()不会给出远程服务器的本地时间吗?
  • @Jdeep:当然,“本地”是指运行代码的计算机。
猜你喜欢
  • 1970-01-01
  • 2016-04-23
  • 2011-07-08
  • 1970-01-01
  • 2021-01-28
  • 2015-06-18
  • 2020-05-30
  • 2011-02-18
相关资源
最近更新 更多