1

我开发了一个winform使用该格式dd-MM-yyyy hh:mm:ss(24 小时制)的应用程序。

当我在另一台计算机上尝试该应用程序时,我收到一个错误,因为standard datetime那里的格式是dd/MM/yyyy hh:mm:ss am/pm.

此外,存储日期时间的控件还以不同的格式保存日期d/M/yyyy hh:mm:ss am/pm时间字符串:例如1/4/2013 12:00:00 AM而不是01/04/2013 12:00:00 AM

我可以强制其他系统以某种方式使用相同的格式吗?我是这里的新手。谢谢您的帮助。

4

3 回答 3

3

显示 DateTime 对象时,需要记住两件事。

  • 文化设置:当您未指定明确的文化时,将使用运行应用程序的系统设置的文化。
  • 格式化字符串:将 DateTime 对象转换为字符串时,您可以给它一个格式字符串作为参数,指定您的 DateTime 对象应如何格式化。类似:“d”表示短日期模式或“t”仅显示时间。

结合这两者将使您可以完全控制如何显示您的DateTime对象。但是,在强制用户使用某种文化设置时应该小心。如果您的应用程序应该支持全球化(因此来自不同文化的多个用户可以使用您的应用程序),那么您不应该依赖于特定的文化。相反,您应该存储所有不区分文化的数据,并在将其显示在屏幕上时使用用户文化对其进行格式化。

下面是一个如何使用 CultureInfo 对象和格式字符串的示例:

string myDate = "10-05-2013 08:52:30";
DateTime date = DateTime.Parse(myDate);

Console.WriteLine(date.ToString("d", new CultureInfo("en-US"))); // 5/10/2013
Console.WriteLine(date.ToString("d", new CultureInfo("nl-NL"))); // 10-5-2013

Console.WriteLine(date.ToString("f", new CultureInfo("nl-NL"))); // vrijdag 10 mei 2013 08:52
于 2013-05-10T06:52:13.227 回答
1

您应该能够将应用程序的文化设置为您需要使用的文化。

System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("EN");
于 2013-05-10T06:48:17.313 回答
0

我不建议强制系统使用一种日期和时间格式。从我的角度来看,更好的问题是,为什么您的应用程序使用指定的格式?.NET Framework 旨在让您不必关心这些事情。

无论如何,如果您真的会强制系统以指定格式显示数据,请更改线程文化:

System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("de-DE")

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("de-DE")
于 2013-05-10T07:00:09.070 回答