0

显示我的 DateTime 值时,我希望它们的格式如下:“February 9, 2009 7:00 AM”

我正在使用以下代码,但担心日期在其他文化中可能显示不正确。谁能告诉我是否是这种情况,如果是这种情况,我该如何解决?

Date.ToString("MMMM dd, yyyy hh:mm tt");

谢谢!

4

4 回答 4

4

我正在使用以下代码,但担心日期在其他文化中可能显示不正确。

究竟什么是“正确”?您是普通的客户端应用程序吗?如果是这样,您将获得本地化的月份名称。那是“不正确的”吗?取决于你在寻找什么。

如果您确实希望在客户端应用程序中使用区域设置友好的时间,那么使用默认的长日期格式将为您提供最流畅的结果。在我的语言环境中,我不希望看到 12 小时制或前一个月,尽管我肯定会理解它。

如果您是服务器端应用程序,您不想使用任何默认本地化的任何内容,因为语言环境将是您的服务器而不是您的用户,并且您将遇到一个奇怪的可移植性问题。在这种情况下,您必须允许用户选择他们自己的语言环境,或者使用您自己的日期格式化函数和内置的英文月份名称。

(或者,为了避免这个问题,没有月份名称。在这种情况下,ISO-8601 格式“YYYY-mm-dd HH:MM:SS”将是默认选择。)

于 2009-02-09T03:59:21.963 回答
2

我更喜欢 ISO 8601 格式(是的,没有“T”):您不必根据谁在读取您的数据而在不同的表示之间进行权衡。更少的代码,更少的错误。

我一直在寻找最初用英文写成的文件,这些文件被“翻译”了,但日期保持“原样”,因此完全错误。

作为额外的奖励,ISO 格式的日期排序就像普通字符串一样!

于 2009-03-06T11:29:33.840 回答
1

为什么不简单地使用用户的长日期/时间格式?

于 2009-02-09T02:07:50.780 回答
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 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

我的意思是,这在他的代码中显示了每种文化

于 2009-02-09T02:08:51.527 回答