本地化日期格式描述符

时间:2008-08-03 17:30:20

标签: .net internationalization date globalization

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

任何来自不使用mm / dd / yyyy格式的文化的人都知道,以这种格式输入日期很烦人。 .NET框架提供了一些非常好的本地化支持,因此根据用户文化解析日期是微不足道的,但是您通常还希望显示有关所需格式的有用提示(尤其是区分yy和yyyy,它们可以互换)大多数文化)。

以对大多数用户有意义的方式执行此操作的最佳方法是什么(例如,由于案例的更改以及在一到两个字母之间切换,dd / M / yyy会让人感到困惑。)

7 个答案:

答案 0 :(得分:6)

Just use 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

答案 1 :(得分:4)

我必须同意OP'错误'日期真的与我的DD / MM / YYYY成长有关,我发现ISO 8601日期和时间非常容易使用。一旦标准正确,engtech有明显的答案,不需要本地化。

我要报告堆栈溢出时的生日输入表单是一个错误,因为它对世界上大多数人来说有多大的痛苦。

答案 2 :(得分:2)

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

答案 3 :(得分: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");

答案 4 :(得分:1)

简短形式很方便,有助于避免拼写错误。根据需要进行本地化,但一定要显示预期的格式(不要让用户失明)。提供日期选择控件作为可选助手填写该字段。

另外,以长篇形式即时解析和显示日期也可能有所帮助。

答案 5 :(得分:1)

如何给出格式(mm / dd / yyyy或dd / mm / yyyy),然后在用户文化中打印出今天的日期。 MSDN上有一篇关于formatting a DateTime for the person's culture的文章,使用的CultureInfo对象可能对此有所帮助。这种格式(大多数人都熟悉)的组合与以该格式表示的当前日期相结合,应该足以让人知道如何输入日期。 (还包括那些仍然无法弄清楚的人的日历控件。)

答案 6 :(得分:0)

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

备用:每次编辑控件的内容发生变化时,解析它并显示(在单独的控件中?)日期的长格式(即:输入“03/04/09”显示“您的输入:2009年3月4日”)