概念问题。为什么datetime.utcnow()返回一个天真的日期:
from datetime import datetime
datetime.utcnow()
Run Code Online (Sandbox Code Playgroud)
而不是像这样指定的 UTC 时区的时间:
from datetime import datetime, timezone
datetime.utcnow().replace(tzinfo=timezone.utc)
Run Code Online (Sandbox Code Playgroud)
该datetime.py源表示,这是故意的。
@classmethod
def utcnow(cls):
"Construct a UTC datetime from time.time()."
t = _time.time()
return cls.utcfromtimestamp(t)
@classmethod
def utcfromtimestamp(cls, t):
"""Construct a naive UTC datetime from a POSIX timestamp."""
return cls._fromtimestamp(t, True, None)
Run Code Online (Sandbox Code Playgroud)
试图了解其背后的思想。谢谢你。
编辑:从这里的链接问题(谢谢)这似乎是 Python 3.2+ 中的首选方法:
from datetime import datetime, timezone
datetime.datetime.now(datetime.timezone.utc)
Run Code Online (Sandbox Code Playgroud)
据我所知,这样做可能会严重伤害自己,或者至少我发现这个特定的决定给我带来了无尽的痛苦。我认为问题在于 Python 本身只支持 UTC 时区,而不支持本地时区。人们的想法似乎是,很多人都希望对所有事情都使用简单的日期,并跟踪(可能基于它是什么程序)无论是 UTC 还是本地日期。因此,涉及时区是您作为程序员必须做出的明确决定,除非您这样做,否则您将永远不会获得带有时区的 DateTime。
不幸的是,这个决定与将 ( 转换为posix 时间时,天真的日期时间被视为本地日期时间的想法相结合,可能会导致很多混乱。我已经 在这里讨论了我遇到的一些问题
| 归档时间: |
|
| 查看次数: |
1696 次 |
| 最近记录: |