日期时间格式:计算机是否可以强制使用特定格式?

时间:2013-05-10 06:44:02

标签: c#

我开发了一个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

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

3 个答案:

答案 0 :(得分:3)

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

  • Culture settings:当您未指定显式文化时,将使用由您的应用程序运行的系统设置的文化。
  • Format strings:将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

答案 1 :(得分:1)

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

System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("EN");

答案 2 :(得分: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")