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

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

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

===============>>#1 票数: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

===============>>#2 票数:4

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

我打算将堆栈溢出的生日输入表格报告为一个bug,因为它对世界上大多数人来说有多大的痛苦。

===============>>#3 票数:2

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

===============>>#4 票数: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");

===============>>#5 票数:1

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

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

===============>>#6 票数:1

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

===============>>#7 票数:0

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

替代方案 :每次编辑控件的内容更改时,解析它并显示(在单独的控件中?)日期的长格式(即:输入“03/04/09”显示“您的输入:2009年3月4日” )

  ask by ICR translate from so

未解决问题?本站智能推荐:

关注微信公众号