我的机器上安装了英文版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,如区域设置中所示。我是否需要自己进行本地化,或者是否有任何构建方法可以做到这一点。如果我在这里遗漏了什么,请告诉我。
编辑:添加此信息是为了根据与Peter的讨论进一步澄清问题。
格式组合框说丹麦语(丹麦)。格式读得很好,即丹麦语,但字符串仍然表示M / d / yyyy而不是M / d /åååå。这是我要在DatePicker控件中显示的确切字符串M / d /åååå。换句话说,水印应显示本地化的ShortDatePattern。还在苦苦挣扎......
答案 0 :(得分:0)
尝试设置CurrentCulture,而不是CurrentUICulture。例如:
Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");
CurrentUICulture指定应用程序所需的资源。
CultureInfo指定日期,时间,数字,货币值,文本排序顺序,套管约定和字符串比较的默认格式,这是您需要的。
答案 1 :(得分:0)
这是您可以做的C#示例。 (转储是一种linqpad扩展方法,您可以在自己的代码中忽略它。)
日期格式字符串的完整列表可用here
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();