Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 本地化日期格式描述符_.net_Internationalization_Date_Globalization - Fatal编程技术网

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

.net 本地化日期格式描述符,.net,internationalization,date,globalization,.net,Internationalization,Date,Globalization,本地化日期格式描述符的最佳方法是什么 正如不使用mm/dd/yyyy格式的文化背景中的任何人所知道的那样,必须以这种格式输入日期是令人恼火的。NET framework提供了一些非常好的本地化支持,因此根据用户文化解析日期很简单,但您通常还希望显示有关所需格式的有用提示(特别是区分yy和yyyy,这在大多数文化中是可互换的) 以对大多数用户都有意义的方式(例如,dd/M/yyy由于大小写的变化以及一个字母和两个字母之间的切换而令人困惑),最好的方法是什么。有什么建议吗 Regex singleM

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

正如不使用mm/dd/yyyy格式的文化背景中的任何人所知道的那样,必须以这种格式输入日期是令人恼火的。NET framework提供了一些非常好的本地化支持,因此根据用户文化解析日期很简单,但您通常还希望显示有关所需格式的有用提示(特别是区分yy和yyyy,这在大多数文化中是可互换的)


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

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

Regex singleMToDoubleRegex=new Regex(“(?给出格式(mm/dd/yyyy或dd/mm/yyyyy),然后在用户区域性中打印出今天的日期。MSDN有一篇文章,使用CultureInfo对象,这可能会有帮助。格式的组合(大多数人都熟悉)与以该格式表示的当前日期相结合,应该足以为用户提供如何输入日期的线索。(还包括一个日历控件,用于那些仍然无法理解日期的用户)。

。这是一个国际标准

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

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

我必须同意OP“错误”的日期与我的DD/MM/YYYY成长经历非常不一致,我发现ISO 8601日期和时间非常容易使用。这一次,标准正确了,并且有了不需要本地化的明显答案


我打算将stack overflow上的生日输入表单报告为一个bug,因为它对世界上大多数人来说都是一个令人痛心的问题。

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


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

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

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