Moh*_*eem 9 c# internationalization
我正在用法语本地化一个网站.但是我不应该将日期格式更改为法语.它必须按照en-us格式保留,即使文化设置为fr-ca,即,当其余内容是法语时,日期格式仍应为英语(en-us).
要更改日期的格式,您可以基于现有的CultureInfo(在您的情况下为"fr-CA")创建自定义CultureInfo,仅修改日期格式.我对此没有任何经验,但链接的文章和本文解释了它是如何完成的.据说,这并不太难.
我想,设置System.Threading.Thread.CurrentThread.CurrentCulture自定义CultureInfo的实例(例如在Page.Load事件中)应该可以完成这项工作.
或者,使用CultureInfo类以每个字符串为基础指定区域性:
CultureInfo culture = new CultureInfo("en-US");
Run Code Online (Sandbox Code Playgroud)
每当您向页面写入日期时,请使用以下语法:
myDate.ToString("d", culture);
Run Code Online (Sandbox Code Playgroud)
要么
string.Format(
culture,
"This is a string containing a date: {0:d}",
myDate);
Run Code Online (Sandbox Code Playgroud)
的CultureInfo类驻留在System.Globalization命名空间和d在上述的格式是在其中输出的日期.有关格式字符串的更多信息,请参阅John Sheehan的".NET格式字符串快速参考"备忘单.
就我而言,我必须设置应用程序的语言,还要确定语言是否是从右到左的语言,但还需要保持标准的日期时间格式。所以这就是我所做的:
string culture = "ar-SA";
//Set language and culture to Arabic
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(culture);
//But independent of language, keep datetime format same
DateTimeFormatInfo englishDateTimeFormat = new CultureInfo("en-CA").DateTimeFormat;
Thread.CurrentThread.CurrentCulture.DateTimeFormat = englishDateTimeFormat;
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是我得到了一个非常简单的答案。在设置 Culture 和 UICulture 时,我所需要做的就是始终将 Culture 属性设置为 en-us 。这将导致始终以英文显示日期格式。