显示我的 DateTime 值时,我希望它们的格式如下:“February 9, 2009 7:00 AM”
我正在使用以下代码,但担心日期在其他文化中可能显示不正确。谁能告诉我是否是这种情况,如果是这种情况,我该如何解决?
Date.ToString("MMMM dd, yyyy hh:mm tt");
谢谢!
显示我的 DateTime 值时,我希望它们的格式如下:“February 9, 2009 7:00 AM”
我正在使用以下代码,但担心日期在其他文化中可能显示不正确。谁能告诉我是否是这种情况,如果是这种情况,我该如何解决?
Date.ToString("MMMM dd, yyyy hh:mm tt");
谢谢!
我正在使用以下代码,但担心日期在其他文化中可能显示不正确。
究竟什么是“正确”?您是普通的客户端应用程序吗?如果是这样,您将获得本地化的月份名称。那是“不正确的”吗?取决于你在寻找什么。
如果您确实希望在客户端应用程序中使用区域设置友好的时间,那么使用默认的长日期格式将为您提供最流畅的结果。在我的语言环境中,我不希望看到 12 小时制或前一个月,尽管我肯定会理解它。
如果您是服务器端应用程序,您不想使用任何默认本地化的任何内容,因为语言环境将是您的服务器而不是您的用户,并且您将遇到一个奇怪的可移植性问题。在这种情况下,您必须允许用户选择他们自己的语言环境,或者使用您自己的日期格式化函数和内置的英文月份名称。
(或者,为了避免这个问题,没有月份名称。在这种情况下,ISO-8601 格式“YYYY-mm-dd HH:MM:SS”将是默认选择。)
我更喜欢 ISO 8601 格式(是的,没有“T”):您不必根据谁在读取您的数据而在不同的表示之间进行权衡。更少的代码,更少的错误。
我一直在寻找最初用英文写成的文件,这些文件被“翻译”了,但日期保持“原样”,因此完全错误。
作为额外的奖励,ISO 格式的日期排序就像普通字符串一样!
为什么不简单地使用用户的长日期/时间格式?
编码
DateTime now=DateTime.Now;
foreach(CultureInfo inf in CultureInfo.GetCultures( CultureTypes.InstalledWin32Cultures))
{
Console.WriteLine(now.ToString("MMMM dd, yyyy hh:mm tt", inf.DateTimeFormat));
}
返回
Tlhakole 09, 2009 04:21 AM
guovvamanu 09, 2009 04:21
goevten 09, 2009 04:21
veljaca 09, 2009 04:21
kuovamaanu 09, 2009 04:21
Hatun puquy 09, 2009 04:21 am
guovva 04:21
ta?lvvmannu 09, 2009 04:21
Chwefror 09, 2009 04:21 am
二月 09, 2009 04:21
guovvamano 09, 2009 04:21
Hui-tanguru 09, 2009 04:21 am
Hatun puquy 09, 2009 04 :21 2009 年 2
月 9 日 04:21
我的意思是,这在他的代码中显示了每种文化