为什么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