C# 程序不遵循Windows计算机的日期格式(是否可以在某处重写?)

C# 程序不遵循Windows计算机的日期格式(是否可以在某处重写?),c#,.net,winforms,datetime,regional-settings,C#,.net,Winforms,Datetime,Regional Settings,我这里有一个很奇怪的 在一个简单的Windows窗体应用程序中,我编写了以下C代码 正常情况下,运行此命令只需以windows指定的格式显示日期(在“区域设置”中)。(因此,在我的机器设置为丹麦语本地时,它显示的日期为dd MM yyyy=>2017年10月13日)这是预期的 但我有一个客户服务器(Windows server 2012),但情况并非如此。在他们的设置中,Windows区域设置与我的类似(dd-MM-yyyy),但尽管上面简单的代码显示为MM/dd/yyy=>2017年10月13

我这里有一个很奇怪的

在一个简单的Windows窗体应用程序中,我编写了以下C代码

正常情况下,运行此命令只需以windows指定的格式显示日期(在“区域设置”中)。(因此,在我的机器设置为丹麦语本地时,它显示的日期为dd MM yyyy=>2017年10月13日)这是预期的

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

我只是不明白这一点,更让人感到不解的是,这只适用于此服务器上的一些windows用户(一些显示的格式为“时钟在窗口中”,另一些显示的格式为不变格式)

我一直在谷歌上搜索是否有某种.NET设置可以覆盖用户级别,但没有找到任何内容


代码中没有任何文化和特殊内容(仅文件>新项目>Winform[Targeting.net 4.5]和上面的代码行)。

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

DateTime.Today.ToString(CultureInfo.InvariantCulture)
结果:
2017年10月13日00:00:00

DateTime.Today.ToString(CultureInfo.CurrentCulture);
结果:
2017年10月13日00:00:00

DateTime.Today.ToString(CultureInfo.CurrentCulture);

这是我在我的(德语)机器上的体验。

您想尊重windows设置吗,例如,如果用户在那里选择了
en-US
,会发生什么?你可以。我不想在这里强迫任何事情。我只希望我的程序将遵循在Windows区域设置中选择的内容。在该服务器上执行的代码是什么?服务器的实际区域设置是否正确,或者只是一种显示格式?这两者可能有所不同。我注意到,对于这样的区域设置,如果您的应用程序作为服务运行,并且服务作为“系统”帐户运行,那么它将不会使用Windows中定义的区域设置,因为您确实无法作为系统帐户登录并更改区域。这可以通过将服务作为特定的本地帐户运行来解决,其中区域已设置为所需的区域设置。它直接在服务器上运行。不知道实际的区域设置,但仍然看不到Windows时钟和程序如何显示2种不同的格式ShortDateString也具有区域性,如果未指定区域性,则为当前区域性。问题是默认值是错误的(不变的),尽管它被时钟在Windows任务栏中使用