2017-10-13 59 views
2

我在这里有一个很奇怪的。程序没有遵循Windows机器的日期格式(它可以被覆盖的地方吗?)

在一个简单的Windows窗体应用程序我写了下面的C#代码

MessageBox.Show("Todays date is: "+DateTime.Today.ToShortDateString()); 

运行这通常只是显示由Windows指定的格式的日期(在该区域设置)。 (所以在我的机器设置为丹麦本地,它显示日期为dd-MM-yyyy => 13-10-2017)这是预期的。

但我有一个客户的服务器(Windows Server 2012),如果情况并非如此。在他们的设置中,Windows区域设置与我的一样(dd-MM-yyyy),但尽管上面的简单代码显示为MM/dd/yyyy => 10/13/2017这是美式格式。

我只是不明白这一点,使它更神秘,它只是对这个服务器上的一些Windows用户(有些显示格式为窗口中的时钟和其他格式不变)。

我一直在Google上搜索,如果有某种.NET设置可以覆盖用户级别但没有发现任何东西。

代码中没有什么文化和任何特殊的东西(只是文件>新项目> Winform [Targeting .net 4.5]和上面的代码行)。

+0

你想尊重窗口设置,例如如果用户在那里选择了“en-US”,会发生什么情况?你可以[强制丹麦语区域](https://stackoverflow.com/q/468791/1997232)。 – Sinatr

+0

我不想在这里强迫任何东西。我只希望我的程序能够遵循Windows区域设置中选择的内容 – RWJ

+0

该代码是否在该服务器上执行?并且该服务器的实际区域设置是否正确,或者只是显示格式?两者可以不同。 – DonBoitnott

回答

1

您是否尝试过使用ToString()方法?

DateTime.Today.ToString(CultureInfo.InvariantCulture) 

结果:10/13/2017 00:00:00

DateTime.Today.ToString(CultureInfo.CurrentCulture); 

结果:13.10.2017 00:00:00

这是我在我的(德国),机上体验。

+0

ToShortDateString也做文化,如果没有文化指定它是当前的文化。问题在哪里是默认是错误的(不变),尽管看到它在Windows任务栏中被时钟使用 – RWJ

相关问题