如何根据区域设置中定义的语言本地化DatePicker日期格式

5

我希望你能帮我翻译一下这段与 IT 技术有关的内容。需要注意的是,文章中保留了 HTML 标签,请确保翻译后格式不变。以下为原文:

我装了一台英文版 Windows 7,系统默认语言是英语(使用“区域和语言设置”)。当我使用以下 C# 语句读取 DateTimeFormat.ShortDatePattern 时:

System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat.ShortDatePattern

我得到了这个结果。
"M/d/yyyy"

我也尝试了这个语句,仍然得到相同的字符串。
System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern  
"M/d/yyyy"

然而,我现在已经从“区域和语言设置”更改了语言,并选择了丹麦语。现在,如果我切换到“格式”选项卡,在短日期格式下,它显示本地化的丹麦语"M/d/åååå"。这意味着通过更改语言,日期时间格式也会更改。
然而,在我的应用程序中,即使加载的CurrentUICulture是正确的,即da-DK对于丹麦语来说是正确的,我仍然得到上述英文格式字符串。我想显示本地化的ShortDateFormat,就像在区域设置中显示的那样。我需要自己进行本地化吗,还是有内置的方法可以实现?请让我知道是否有遗漏的地方。
编辑:根据与彼得的讨论进一步澄清了问题的信息。
格式组合框显示为丹麦(丹麦)。格式被正确读取,即丹麦语,但字符串仍然显示为M/d/yyyy,而不是M/d/åååå。这正是我想在我的DatePicker控件中显示的确切字符串M/d/åååå。换句话说,水印应该显示本地化的ShortDatePattern。仍在苦苦挣扎…
2个回答

1

尝试设置CurrentCulture而不是CurrentUICulture。例如:

Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");

CurrentUICulture指定了应用程序需要的资源。

CultureInfo指定了日期、时间、数字、货币值的默认格式,文本的排序顺序,大小写约定和字符串比较,并且这是您所需的。


谢谢您的回复,但是在上面的语句之后,您期望下面这个语句的结果是什么?Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern结果是"dd-MM-yyyy",仍然是一个英文字符串,而不是像这样的丹麦语 "dd-MM-åååå"。 - Iftikhar

1

这里是一个 C# 的示例,你可以参考一下。(Dump 是 LinqPad 的扩展方法,在你自己的代码中可以忽略它)。

日期格式字符串的完整列表可以在 这里 找到。

var languages =  new List<string>{"de-DE", "en", "es-ES", "es-MX", "fr-FR", "it-IT", "pt-BR", "sv-SE"};
    var date = DateTime.Now;
    languages.Select (l => new {
        Lang=l,

        d_shortDate =  date.ToString("d", new CultureInfo(l)),
        D_longDate =  date.ToString("D", new CultureInfo(l)),
        g_generalDate1 =  date.ToString("g", new CultureInfo(l)),
        m =  date.ToString("m", new CultureInfo(l)),
        y =  date.ToString("y", new CultureInfo(l)),
        dd = date.ToString("dd", new CultureInfo(l)),
        mm = date.ToString("mm", new CultureInfo(l)),
        yy = date.ToString("yy", new CultureInfo(l)),
    }) .Dump();

Date formats


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