本地化日期格式描述符

22
什么是本地化日期格式描述符的最佳方法?
对于那些不使用 mm/dd/yyyy 格式的文化背景,必须输入这种格式的日期非常让人烦恼。.NET 框架提供了极好的本地化支持,所以根据用户的文化背景解析日期是轻而易举的,但你经常希望显示一个有用的提示来指示所需的格式(特别是要区分在大多数文化中可以互换的 yy 和 yyyy)。
什么是让大多数用户理解的最佳方式(例如,dd/M/yyy 是令人困惑的,因为大小写会改变并且字母数量也会在 1 到 2 之间切换)?
7个回答

7

只需使用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

4

我必须同意OP的观点,“错误”的日期与我从小接受的DD/MM/YYYY格式格格不入,而我发现ISO 8601日期和时间非常容易使用。这次标准确实做得很好,engtech给出了显而易见的答案,不需要本地化。

我原本想将Stack Overflow上的生日输入表单报告为一个错误,因为它对世界上大多数人来说都是一个眼中钉。


2

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

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");

2

国际标准的问题在于几乎没有人使用它们。我尽可能遵循这些标准,但在现实生活中几乎到处都要使用dd/mm/yyyy格式日期,这意味着我已经习惯了使用ISO-8601,但仍需要有意识地去使用。对于那些甚至不尝试使用ISO-8601的大多数人来说,情况更糟。如果您能够在可以的地方进行国际化处理,我认为这是一个很大的优势。


1
如何考虑以(mm/dd/yyyy或dd/mm/yyyy)格式输出用户文化中的今天日期。MSDN有一篇关于使用CultureInfo对象格式化DateTime为人的文化的文章,这可能对此有所帮助。将格式(大多数人熟悉的)与以该格式表示的当前日期相结合,应足以向用户提供有关他们应如何输入日期的线索。(对于那些仍然无法理解的人,请包括一个日历控件)。

1

使用简短的表单可以方便地避免拼写错误。根据需要进行本地化,但一定要显示预期的格式(不要让用户感到困惑)。提供一个日期选择器控件作为填写字段的可选辅助工具。

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


0

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

备选方案:每当编辑控件的内容发生更改时,解析它并显示日期的长格式(例如:输入“03/04/09”显示“您的输入:2009年3月4日”)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接