Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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# DateTime.TryParseExact无法在Windows 7上解析特定日期,但在Windows 10上可以工作_C#_.net_Datetime - Fatal编程技术网

C# DateTime.TryParseExact无法在Windows 7上解析特定日期,但在Windows 10上可以工作

C# DateTime.TryParseExact无法在Windows 7上解析特定日期,但在Windows 10上可以工作,c#,.net,datetime,C#,.net,Datetime,当我运行下面的代码时,在Windows 10上它成功解析日期并输出“2012-03-14”,而在Windows 7上它无法解析日期。我同时使用.NET4.0和4.6.1进行了测试,两台计算机上都存在“gsw FR”文化。在Windows 7上运行时,为什么不能正常工作 if (DateTime.TryParseExact("Mettwuch 14 März 2012", "dddd d MMMM yyyy", new CultureInfo("gsw-FR"), DateTimeStyles.N

当我运行下面的代码时,在Windows 10上它成功解析日期并输出“2012-03-14”,而在Windows 7上它无法解析日期。我同时使用.NET4.0和4.6.1进行了测试,两台计算机上都存在“gsw FR”文化。在Windows 7上运行时,为什么不能正常工作

if (DateTime.TryParseExact("Mettwuch 14 März 2012", "dddd d MMMM yyyy", new CultureInfo("gsw-FR"), DateTimeStyles.None, out var dt))
    Console.WriteLine(dt.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
else
    Console.WriteLine("Parsing Error");

在Windows 7和Windows 10上输出日期2012-03-14的格式化日期模式时,我注意到星期几(对应于格式代码“dddd”)的拼写不同

Console.WriteLine(new DateTime(2012, 3, 14).ToString("dddd d MMMM yyyy", new CultureInfo("gsw-FR")));
Windows 7输出:Mittwuch 14 März 2012
Windows 10输出:Mettwuch 14 März 2012

同样,如果使用NumberFormat
“[$-10484]ddddd d mmmm yyyy;@”
,在Microsoft Excel中使用日期值2012-03-14格式化单元格,则日期格式如下:

Windows 7上的Excel 2007/2010:Mittwuch 14 März 2012
Windows 7上的Excel 2013/2016/365:Mettwuch 14 März 2012
Windows 10上的Excel 2007/2010/2013/2016/365:Mettwuch 14 März 2012


.NET在Windows上不使用自己的本地化数据,本地化数据是操作系统的一部分,这就是同一日期格式代码在本例中不同的原因。在本例中,Windows 7和Windows 10具有不同的本地化数据,用于使用gsw FR语言环境拼写一周中的特定日期。此外,Excel似乎有一种特殊的行为,即Windows 7上不同版本(2010和2013)的Excel输出不同的格式化值,另外,不同操作系统(Windows 7和Windows 10)上相同的Excel版本(2007或2010)输出不同的格式化值。因此,目前尚不清楚Excel是否使用自己的本地化数据或操作系统的本地化数据。

因为您已经尝试在两个操作系统上使用相同的格式设置相同的日期-请将此信息添加到问题中。为什么会转换为“检索2012年3月14日”?它不应该是“Mëttwoch”而不是“Mettwuch”?因为谷歌翻译在自动检测中使用了错误的语言。地点是“阿尔萨斯(法国)”。通过将单元格值设置为日期2012-03-14,并在Excel中使用NumberFormat“[$-gsw FR,1]dddd d mmmm yyyy;@”对其进行格式化,可以获得此格式化的日期值。其余“为什么在Win7中不更新本地化”的答案是。。。除非你的问题是“如果.Net在Windows上使用自己的本地化/全球化数据”,否则答案是否定的。。。(注意:“更新”可能是更好的答案……因为现在还不清楚你剩下的问题是什么)