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

2024-04-20 09:11:36 发布

您现在位置:Python中文网/ 问答频道 /正文

现在我用

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

将当前时间显示为字符串。
问题是,我的计算机在Europe/Berlin时区中运行,这里不计算到UTC的+2偏移量。 它应该显示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


编辑:

回答

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

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

  • 服务器/系统的时区设置是否正确?
    • VMs或docker容器可能与主机不同步,这值得检查。
  • 那台电脑上的时间对吗?你不是在改变时区后2小时就结束了吗?

Tags: 字符串答案import服务器datetime计算机时间now
1条回答
网友
1楼 · 发布于 2024-04-20 09:11:36

要将本地时区中的当前时间作为原始日期时间对象,请执行以下操作:

from datetime import datetime
naive_dt = datetime.now()

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

要将UTC中的当前时间作为原始日期时间对象获取,请执行以下操作:

naive_utc_dt = datetime.utcnow()

要在Python3.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对象,它也可以工作。

相关问题 更多 >