现在我用
import datetime
print(datetime.datetime.now().strftime("%X"))
以字符串形式显示当前时间
问题是,我的计算机在Europe/Berlin
时区运行,此处不计算+2到UTC的偏移量。
它应该显示19:22:26
,而不是21: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
无法发布回答,因为此问题已标记为已关闭
我遇到此问题的服务器不再存在。 无论如何,这里有一些值得检查的事情:
答案 0 :(得分:88)
要将本地时区的当前时间作为天真的日期时间对象获取:
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对象,它也能工作。