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