Python在正确的时区中获取当前时间



现在我使用

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小时的成绩吗

要将本地时区中的当前时间作为初始日期时间对象:

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)

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

相关内容

  • 没有找到相关文章

最新更新