Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .net core 3.1到.net core 5的升级是否对日期时间值进行了错误的转换?此突破性更改和解决方案的任何文档_C#_Datetime_Asp.net Core_.net Core_Entity Framework Core - Fatal编程技术网

C# .net core 3.1到.net core 5的升级是否对日期时间值进行了错误的转换?此突破性更改和解决方案的任何文档

C# .net core 3.1到.net core 5的升级是否对日期时间值进行了错误的转换?此突破性更改和解决方案的任何文档,c#,datetime,asp.net-core,.net-core,entity-framework-core,C#,Datetime,Asp.net Core,.net Core,Entity Framework Core,最近将一个应用程序从.NET Core 3.1升级到.NET 5。出于某种原因,DateTimeKind在3.1中是本地的,现在在.NET5中是UTC 我创建了一个简单的项目来说明这个问题 问题: 任何人都可以从微软文档中确认,如果这是他们在两个版本之间引入的更改,是错误还是新设计? 在线搜索并没有让我在这方面找到任何有用的东西 您描述的问题与bug修复有关 简而言之,ISO 8601时间戳末尾的Z明确表示UTC。错误在于,当通过模型绑定获得该值时,它以前被解释为DateTimeKind.Lo

最近将一个应用程序从.NET Core 3.1升级到.NET 5。出于某种原因,DateTimeKind在3.1中是本地的,现在在.NET5中是UTC

我创建了一个简单的项目来说明这个问题

问题:

  • 任何人都可以从微软文档中确认,如果这是他们在两个版本之间引入的更改,是错误还是新设计? 在线搜索并没有让我在这方面找到任何有用的东西

  • 您描述的问题与bug修复有关

    简而言之,ISO 8601时间戳末尾的
    Z
    明确表示UTC。错误在于,当通过模型绑定获得该值时,它以前被解释为
    DateTimeKind.Local
    ,而不是
    DateTimeKind.Utc
    。该错误已在5.0中更正

    • 本期中描述了该缺陷:

    • 在本PR中已修复:

    • 此处提出(但被拒绝)将修复向后移植到3.1的请求:


    新的行为是正确的。如果您依赖旧的行为,则可能还有其他.NET代码需要更正。

    很抱歉,我将您的答案标记为正确,但我不清楚为什么在提供参数值date=2021-04-20T00:00-04:00时,.NET 5中仍然显示为UTC,它不应该是本地的,因为不存在Z,并且存在EST时区偏移量吗?我同意,如果通过像
    -04:00
    这样的偏移量,它仍然应该是
    本地的。您可能希望查看并引用另一个。同时,我建议如果要传递带有偏移量的值,则使用
    DateTimeOffset
    而不是
    DateTime
    。服务器的本地时区不应该是等式的一部分。请记住,即使这样的值将具有
    local
    类型,实际日期/时间部分也将调整为本地服务器时区设置的任何值。这是使用
    DateTimeOffset
    的另一个原因。