显示我的DateTime值时,我希望它们的格式如下:“2009年2月9日上午7:00”
我使用以下代码,但我担心日期可能在其他文化中显示不正确。任何人都可以告诉我是否是这种情况,如果是,我该如何解决?
Date.ToString("MMMM dd, yyyy hh:mm tt");
谢谢!
答案 0 :(得分:4)
我使用以下代码,但我担心日期可能在其他文化中显示不正确。
究竟是什么'正确'?你是一个普通的客户端应用程序吗?如果是这样,您将获得本地化的月份名称。这是'不正确'吗?取决于你要找的东西。
如果您 希望在客户端应用中使用区域设置友好时间,那么使用默认的长日期格式将为您提供最流畅的结果。在我的语言环境中,我不希望看到12小时或一天前的月份,但我肯定会理解它。
如果您是服务器端应用程序,则不希望使用任何默认本地化的应用程序,因为区域设置将是您的服务器而不是您的用户,并且您将遇到奇怪的可移植性问题。在这种情况下,您必须允许用户选择他们自己的语言环境,或者使用您自己的日期格式化函数和内置英语月份名称。
(或者,为了避免这个问题,没有月份名称。在这种情况下,ISO-8601格式“YYYY-mm-dd HH:MM:SS”将是默认选择。)
答案 1 :(得分:2)
我更喜欢ISO 8601格式(并且没有“T”):您不必根据谁在阅读您的数据来兼顾不同的表示形式。 更少的代码,更少的错误。
我一直在寻找原本用英文写成的文件,这些文件被“翻译”但是日期保持“原样”,因此完全错误。
作为额外的奖励,ISO格式的日期排序就像普通字符串一样!
答案 2 :(得分:1)
为什么不简单地使用用户的长日期/时间格式?
答案 3 :(得分:1)
代码
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 a.m.
guovvamanu 09,2009 04:21
ta?lvvmannu 09,2009 04:21
Chwefror 09,2009 04:21 a.m.
februar 09,2009 04:21
guovvamano 09,2009 04:21
Hui-tanguru 09,2009 04:21 a.m.
Hatun puquy 09,2009 04:21
februar 09,2009 04:21
我的意思是,这代表了他的代码中的每种文化