升级后 .net core 5.0 时区发生变化
After upgrade .net core 5.0 timezone has changed
我们有一个 api 适用于 .net core 3.1,我刚刚升级到 5.0 并且日期行为发生了变化。
我遇到了时区问题。
感谢您的评论。
默认行为 (3.1)
参数:
createdOnGreaterThan: 2021-09-16T07:00:00.000Z
createdOnLessThan: 2021-09-16T08:00:00.000Z
Api 读作:
createdOnGreaterThan: 2021-09-16 10:00:00 (+3 added)
createdOnLessThan: 2021-09-16 11:00:00 (+3 added)
升级后(5.0)
参数:
createdOnGreaterThan: 2021-09-16T07:00:00.000Z
createdOnLessThan: 2021-09-16T08:00:00.000Z
Api 5.0 读作:
createdOnGreaterThan: 2021-09-16 7:00:00 (no added)
createdOnLessThan: 2021-09-16 8:00:00 (no added)
.NET Core 3.1 中的默认行为实际上是一个错误,其中模型绑定器将 UTC 时间从查询转换为 local DateTime
,当它应该为 UTC 时间 see this issue.
您在 .NET 5.0 中获得的行为是正确的行为,在 bugfix 之后作为 UTC 时间。
不幸的是,错误修复并不重要,因此也没有应用于 .NET 3.1。
欢迎来到 Core over Framework 的世界,在这里,我们 'expected' 的错误行为曾经永远存在 :)
我们有一个 api 适用于 .net core 3.1,我刚刚升级到 5.0 并且日期行为发生了变化。
我遇到了时区问题。
感谢您的评论。
默认行为 (3.1)
参数:
createdOnGreaterThan: 2021-09-16T07:00:00.000Z
createdOnLessThan: 2021-09-16T08:00:00.000Z
Api 读作:
createdOnGreaterThan: 2021-09-16 10:00:00 (+3 added)
createdOnLessThan: 2021-09-16 11:00:00 (+3 added)
升级后(5.0)
参数:
createdOnGreaterThan: 2021-09-16T07:00:00.000Z
createdOnLessThan: 2021-09-16T08:00:00.000Z
Api 5.0 读作:
createdOnGreaterThan: 2021-09-16 7:00:00 (no added)
createdOnLessThan: 2021-09-16 8:00:00 (no added)
.NET Core 3.1 中的默认行为实际上是一个错误,其中模型绑定器将 UTC 时间从查询转换为 local DateTime
,当它应该为 UTC 时间 see this issue.
您在 .NET 5.0 中获得的行为是正确的行为,在 bugfix 之后作为 UTC 时间。
不幸的是,错误修复并不重要,因此也没有应用于 .NET 3.1。
欢迎来到 Core over Framework 的世界,在这里,我们 'expected' 的错误行为曾经永远存在 :)