我正在将我的代码从.net框架迁移到.net核心并在Linux机器上进行测试,我遇到的问题之一是调用DateTime ToString()函数时的日期格式,在Windows中,默认的日期格式由操作系统指导,可以在我在Linux中尝试过的类似设置中进行自定义,方法是使用所需的格式定义一个新的区域设置文件,并设置适当的变量(LC_Time)。当向系统询问日期时,我得到了所需格式的答案,但当运行代码时,我仍然得到“错误”的答案。我遗漏了什么吗?
最佳答案
老问题,但我刚刚有这个问题。它是.NET核心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,但它没有解决我的问题(仍然是7/6/18),请您帮助我解决同样的问题。提前谢谢
这在3.0中是固定的。出于应用程序兼容性的原因,我们没有更改2.1行为。