好吧,这快把我逼疯了。我安装了一个新的ubuntu18.04服务器实例,它运行我的dotnetcore2.2MVC应用程序。
尽管在操作系统和当前线程中似乎正确设置了语言环境,但DateTime.ToString()函数给了我一种奇怪的数据格式:
在这两种情况下,当前线程本地都是"fr-CA“。在操作系统中,"locale“命令在这两种情况下都会返回"en_US”。
我在CurrentThread.CurrentCulture.DateTimeFormat中检查过depper,它似乎在两种情况下都不一样。查看CurrentThread.CurrentCulture.DateTimeFormat.ShortTimePattern变量时:
这是什么魔法?我的鼻子在出血。
发布于 2019-05-10 01:59:25
在研究了dotnet核心中的DateTime格式的源代码之后,我找到了一个修复方法,可以确保ToString()在不带参数的情况下正常工作。
System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat.LongTimePattern = "HH:mm:ss";
System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat.TimeSeparator = ":";
System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat = System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat;
发布于 2019-05-10 03:33:46
我可以复制您的结果,这似乎是.NET核心如何解释这种特定文化的CLDR数据的特定错误。
我在这里报告了这个问题:https://github.com/dotnet/corefx/issues/37557
发布于 2019-05-10 00:43:25
就像@Powerlord在评论中说的那样,你为什么不指定日期的格式呢?
如下所示:
DateTime.ToString("dd-MM-yy HH:mm:ss");
输出:
09-05-19 17:43:10
https://stackoverflow.com/questions/56063807
复制相似问题