.net -本地化日期格式描述符

Translate

本地化日期格式描述符的最佳方法是什么?

正如不使用mm / dd / yyyy格式的文化人士所知道的那样,必须以这种格式输入日期很烦人。 .NET框架提供了一些非常好的本地化支持,因此根据用户的文化来解析日期很简单,但是您通常还希望显示有关所需格式的有用提示(尤其是在yy和yyyy之间进行区分,在大多数文化)。

以对大多数用户有意义的方式执行此操作的最佳方法是什么(例如,dd / M / yyy由于大小写的变化以及一个字母和两个字母之间的切换而令人困惑)。

This question and all comments follow the "Attribution Required."

所有的回答

Translate

只需使用ISO-8601。这是国际标准。

Date and time (current at page generation) expressed according to ISO 8601:
Date:                           2014-07-05
Combined date and time in UTC:  2014-07-05T04:00:25+00:00
                                2014-07-05T04:00:25Z
Week:                           2014-W27
Date with week number:          2014-W27-6
Ordinal date:                   2014-186
来源
Translate

我必须在DD / MM / YYYY成长过程中同意OP“错误”日期的确存在,我发现ISO 8601日期和时间非常易于使用。一旦标准正确,英泰有明显的答案,不需要本地化。

我打算将堆栈溢出时的生日输入表单报告为一个错误,因为它对全世界大多数人来说都是一个痛苦的拇指。

来源
ICR
Translate

这是我目前的方法。有什么建议?

Regex singleMToDoubleRegex = new Regex("(?<!m)m(?!m)");
Regex singleDToDoubleRegex = new Regex("(?<!d)d(?!d)");
CultureInfo currentCulture = CultureInfo.CurrentUICulture;

// If the culture is netural there is no date pattern to use, so use the default.
if (currentCulture.IsNeutralCulture)
{
    currentCulture = CultureInfo.InvariantCulture;
}

// Massage the format into a more general user friendly form.
string shortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern.ToLower();
shortDatePattern = singleMToDoubleRegex.Replace(shortDatePattern, "mm");
shortDatePattern = singleDToDoubleRegex.Replace(shortDatePattern, "dd");
来源
ICR
Translate

国际标准的麻烦在于几乎没有人使用它们。我尽我所能,但是我被迫在现实生活中几乎所有地方都使用dd / mm / yyyy,这意味着我已经习惯了使用ISO-8601始终是一个自觉的过程。对于大多数甚至不尝试使用ISO-8601的人来说,情况甚至更糟。如果可以在可能的地方进行国际化,我认为这是一个很大的优势。

来源
Translate

如何给出格式(mm / dd / yyyy或dd / mm / yyyy),然后在用户的文化背景下打印出今天的日期。 MSDN上有一篇文章格式化该人的文化的DateTime,使用CultureInfo对象可能会对此有所帮助。格式(大多数人都熟悉的格式)与以该格式表示的当前日期的组合应该足以使人们了解如何输入日期。 (还为那些仍然无法弄清楚日历的人提供了一个日历控件)。

来源
Translate

简短形式很方便,有助于避免拼写错误。进行本地化(如果适用),但请确保显示期望的格式(不要使用户盲目)。提供日期选择器控件作为可选的协助填写该字段。

另外,即时分析和以长格式显示日期也可能会有所帮助。

来源
Translate

最佳选择:我建议使用标准的日期选择器。

另类:每次编辑控件的内容更改时,都将对其进行解析并以长格式显示日期(在另一个控件中?)(即:输入“ 03/04/09”显示“您的输入:2009年3月4日”)

来源
下一个问题:
Python和MySQL