为什么python3.12要移除datetime.utc?

为什么python3.12要移除datetime.utc?

为什么python3.12要移除datetime.utc?

看了一篇文章 https://blog.miguelgrinberg.com/post/it-s-time-for-a-change-d... ,讲了一大堆,但是我还是不明白为什么要移除


尤其是在 web 后端领域,获取 utc 时间很重要

我一般是这样获取的

def get_utc_now_timestamp(tzinfo: bool = True) -> datetime:

""" https://blog.csdn.net/ball4022/article/details/101670024 """

if tzinfo:

return datetime.utcnow().replace(tzinfo=timezone.utc)

else:

return datetime.utcnow().replace(tzinfo=None)

如果要移除 utcnow,上面的函数应该怎么修改来获取 utc 时间呢?


回答:

现在的函数返回值里丢失了时区信息(即所谓的 Naive datetime)。如果你把它当做中间变量或者参数在你的业务代码里来回传递的话,很可能会导致很多诡异的问题。

至于为啥是废弃并引入新的 API、而不是改进原有的 API,这就是官方自己的考量了。我个人觉得是为了给开发者强化这是一个 Breaking Change 的认知,“逼迫”开发者们重新审视一遍现有的代码。


很多编程语言都有类似的问题,关于日期时间的 API 在早期设计时没过多考虑到跨时区处理的问题(上古时代确实很少有这些需求),埋下了很多坑。

比如 Java 中的 java.util.Date,后来在 Java 8 中引入了新的 java.time.LocalDateTime + java.time.ZonedDateTime

再比如 C# 中的 System.DateTime,后来在 .NET Framework 3.5 中引入了新的 System.DateTimeOffset

以上是 为什么python3.12要移除datetime.utc? 的全部内容, 来源链接: utcz.com/p/939075.html

回到顶部