提问人:AlanSTACK 提问时间:9/17/2023 最后编辑:FObersteinerAlanSTACK 更新时间:9/17/2023 访问量:56
为什么时区不知道日期时间对象会以本地时区打印出来?
Why does timezone unaware datetime object print out in local timezone?
问:
当我像这样实例化一个日期时间对象时:
>>> print(datetime.datetime.now())
2023-09-16 10:30:15.50
我得到了正确的当地时间,目前大约是.10:30 AM
为什么会这样?它不应该默认为UTC时间吗?
答:
2赞
Sauron
9/17/2023
#1
datetime.datetime.now()
默认情况下,函数返回当前本地日期和时间。本地时间由系统的时区设置决定。- 如果要以 UTC 格式获取当前时间,可以使用:
import datetime
print(datetime.datetime.now(datetime.timezone.utc))
评论
1赞
AlanSTACK
9/17/2023
对不起,我对文档“如果可选参数 tz 是 None 或未指定,这就像 today()”感到困惑。谢谢!
1赞
FObersteiner
9/17/2023
"如果你想以UTC格式获取当前时间“ - 你应该使用的是。 是一种容易出错的方法(恕我直言,应该弃用),顾名思义,这是一个可感知的结果,而实际上并非如此。另请参阅停止使用 utcnow 和 utcfromtimestamp。datetime.datetime.now(datetime.timezone.utc)
utcnow
0赞
Sauron
9/17/2023
好的,很好不知道,谢谢你的分享,会编辑这个。
1赞
FObersteiner
9/17/2023
我不确定实际上是什么时候引入的,但我的猜测是,它来自时区处理在 Python 中还不是真正东西的时代,作为一种解决方法。那肯定是在我开始学习 Python 3.6 版本之前。但是我已经看到它在行动中失败了,所以感谢您更新帖子;-)utcnow
评论
datetime
dateitme.now
timestamp