为什么python3.12要移除datetime.utc?-灵析社区

D_Y_大师

为什么python3.12要移除datetime.utc? 看了一篇文章 [https://blog.miguelgrinberg.com/post/it-s-time-for-a-change-d...](https://link.segmentfault.com/?enc=A0%2F4%2FPivcieP8rXIhAFCbg%3D%3D.lm%2FUTOf1dOG63tn14db%2ByoPZKYyppS6onl%2B%2ByoQDN5CG0Q9xHCxfL7xt1UPtO%2FJGVGIpMJYCKB5mOgNBhpFzhkVvTdkPPmnvvDuT7YO60fyAk9H1Wbg%2FF0owRFzaoPOB) ,讲了一大堆,但是我还是不明白为什么要移除 * * * 尤其是在 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 时间呢?

阅读量:18

点赞量:0

问AI
现在的函数返回值里丢失了时区信息(即所谓的 "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"。