Python在正确的时区获取当前时间[重复]

Posted

技术标签:

【中文标题】Python在正确的时区获取当前时间[重复]【英文标题】:Python get current time in right timezone [duplicate] 【发布时间】: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 小时结束了吗?

【问题讨论】:

你得到了什么输出? 让我们continue this discussion in chat。 相关:How to get current time in Python @champion-runner 上面我已经导入的那个? 这是另一个问题的副本,尽管只有在这里,我找到了普通的 pytz 解决方案。由于季节性时移,另一个答案只是让我确信根本不使用任何本地时间和 pytz 。但是对于真正只想​​显示该地点当前时间的人来说,为什么不在这里使用这种 pytz 方式呢?重新打开? 【参考方案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:当然,“本地”是指运行代码的计算机。

以上是关于Python在正确的时区获取当前时间[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在php中获取用户当前时区[重复]

使用本地时区在 Python 中获取正确的时区偏移量

如何在 Python 中获取或打印 GMT 时区的当前日期时间? [复制]

iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法

获取特定时区的时间[重复]

获取特定时区的时间[重复]