You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无时区信息的datetime对象会以本地时区打印输出?

为什么datetime.datetime.now()返回本地时间而非UTC时间?

首先要明确,Python的datetime.datetime.now()方法本来就是设计用来获取本地系统时间的,这是它的默认行为,完全符合预期。

  • 如果你需要UTC标准时间,对应的方法是datetime.datetime.utcnow(),调用它就能得到当前的UTC时间。
  • 另外要注意,now()和utcnow()返回的都是不带时区信息的naive datetime对象,如果想避免时间混淆,推荐使用带时区感知的对象——比如Python 3.9及以上版本里,可以用datetime.datetime.now(datetime.timezone.utc)来获取带UTC时区标记的时间。

给个代码示例直观对比:

import datetime

# 获取本地时间
local_time = datetime.datetime.now()
print(f"本地时间: {local_time}")

# 获取UTC时间
utc_time = datetime.datetime.utcnow()
print(f"UTC时间: {utc_time}")

# 获取带时区标记的UTC时间(Python 3.9+)
aware_utc_time = datetime.datetime.now(datetime.timezone.utc)
print(f"带时区的UTC时间: {aware_utc_time}")

简单总结:

  • now() → 本地系统时间(无时区标记)
  • utcnow() → UTC时间(无时区标记)
  • 追求时间准确性的话,尽量使用带时区感知的datetime对象

内容的提问来源于stack exchange,提问作者AlanSTACK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:17:01