Linux上的.net核心日期格式

时间:2018-09-26 19:37:24

标签: c# .net linux .net-core

我正在将代码从.net框架迁移到.net核心,并在Linux机器上对其进行测试,我遇到的问题之一是调用DateTime ToString()函数时的日期格式,在Windows中默认日期格式由操作系统指导,可以在设置中进行自定义。我尝试在Linux中通过使用所需格式定义新的语言环境文件并设置适当的变量(LC_Time)来执行类似的操作。当询问系统日期时,我会得到所需格式的答案,但是运行代码时,我仍然会得到“错误”的答案。我想念什么吗?

1 个答案:

答案 0 :(得分:0)

老问题,但我刚遇到那个问题。这是.NET Core 2的"bug / feature / expected behavior" ...

  

之所以发生这种情况,是因为en-US的默认短日期(在Linux上)为M / d / yy。确定默认短日期的方式是代码

     

https://github.com/dotnet/coreclr/blob/master/src/corefx/System.Globalization.Native/calendarData.cpp#L527

     

https://github.com/dotnet/coreclr/blob/master/src/corefx/System.Globalization.Native/calendarData.cpp#L281

     

使用的默认短日期模式是该枚举返回的第一个短日期,看起来ICU为KShort返回了什么

但是,它将根据此pull request在.NET Core 3中进行更改/修复:

  
    

我尝试使用dotnet core build pack 2.1.3,它没有解决格式d的问题(仍然得到7/6/18),请您帮我解决一下。预先感谢

  
     

此问题在3.0中已修复。我们出于应用程序兼容性原因未更改2.1行为。