Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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
1971年C#BST时区期间的差异(Windows与Linux)_C#_.net_Linux_Timezone_.net Core - Fatal编程技术网

1971年C#BST时区期间的差异(Windows与Linux)

1971年C#BST时区期间的差异(Windows与Linux),c#,.net,linux,timezone,.net-core,C#,.net,Linux,Timezone,.net Core,我的系统设置为伦敦时间(GMT),区域设置设置为英国默认值 在Ubuntu 16.04、.NET Core 1.1上运行时,此代码生成以下内容: DateTime.Now: 27/01/2017 11:03:31 DateTime.UtcNow: 27/01/2017 11:03:31 new DateTime(1968, 02, 18).ToUniversalTime(): 18/02/1968 00:00:00 new DateTime(1968, 02, 19).ToUniversalT

我的系统设置为伦敦时间(GMT),区域设置设置为英国默认值

在Ubuntu 16.04、.NET Core 1.1上运行时,此代码生成以下内容:

DateTime.Now: 27/01/2017 11:03:31
DateTime.UtcNow: 27/01/2017 11:03:31

new DateTime(1968, 02, 18).ToUniversalTime(): 18/02/1968 00:00:00
new DateTime(1968, 02, 19).ToUniversalTime(): 18/02/1968 23:00:00

new DateTime(1971, 10, 31).ToUniversalTime(): 30/10/1971 23:00:00
new DateTime(1971, 11, 01).ToUniversalTime(): 01/11/1971 00:00:00
在Windows Server 2008 R2、.NET Core 1.1(以及.NET Framework 4.5.1)上运行这些表达式时,会生成:

DateTime.Now: 27/01/2017 10:55:47
DateTime.UtcNow: 27/01/2017 10:55:47

new DateTime(1968, 02, 18).ToUniversalTime(): 18/02/1968 00:00:00
new DateTime(1968, 02, 19).ToUniversalTime(): 19/02/1968 00:00:00

new DateTime(1971, 10, 31).ToUniversalTime(): 30/10/1971 23:00:00
new DateTime(1971, 11, 01).ToUniversalTime(): 01/11/1971 00:00:00
BST的变化似乎发生在1971年(而不是像Linux那样的1968年)——一个看似随意的日期

new DateTime(1971, 03, 28).ToUniversalTime(): 28/03/1971 00:00:00
new DateTime(1971, 03, 29).ToUniversalTime(): 28/03/1971 23:00:00
基于1968年和1971年(的实现)期间BST发生的情况,Linux在实际转换中似乎是正确的,而Windows似乎没有考虑到这一点,引入了一个不同的时期


这种行为的原因是什么?

似乎是.NET内核或Windows BST表中的错误。由于Microsoft提供的历史数据表存在问题,NodaTime现在是否提供了自己的表?