【发布时间】:2011-01-31 14:14:33
【问题描述】:
我正在对一个法语网站进行本地化。但是我不应该将日期格式更改为法语。即使文化设置为 fr-ca,它也必须保持 en-us 格式,即当其余内容为法语时,日期格式仍应为英语(en-us)。
【问题讨论】:
我正在对一个法语网站进行本地化。但是我不应该将日期格式更改为法语。即使文化设置为 fr-ca,它也必须保持 en-us 格式,即当其余内容为法语时,日期格式仍应为英语(en-us)。
【问题讨论】:
在我的情况下,我必须设置应用程序的语言,还要确定语言是否是从右到左的语言,还需要保持标准的日期时间格式。这就是我所做的:
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;
【讨论】:
要更改日期的格式,您可以create a custom CultureInfo,基于现有的 CultureInfo(在您的情况下为“fr-CA”),仅修改日期格式。我在这方面没有任何经验,但链接的文章和this article 解释了它是如何完成的。应该不会太难吧。
我想将 System.Threading.Thread.CurrentThread.CurrentCulture 设置为您的自定义 CultureInfo 的一个实例(例如在 Page.Load 事件中)应该可以完成这项工作。
或者,使用 CultureInfo 类基于每个字符串指定文化:
CultureInfo culture = new CultureInfo("en-US");
每当您向页面写入日期时,请使用以下语法:
myDate.ToString("d", culture);
或
string.Format(
culture,
"This is a string containing a date: {0:d}",
myDate);
CultureInfo 类位于System.Globalization 命名空间中,上面的d 是输出日期的格式。 See John Sheehan's ".NET Format String Quick Reference" cheat sheet 了解有关格式字符串的更多信息。
【讨论】:
谢谢各位!!!! 似乎您的建议对我有用。 我尝试创建一种自定义文化,它扩展了 fr-ca 的功能并将其日期格式更改为 en-us。 这是代码
CultureInfo ci = new CultureInfo("fr-ca");
DateTimeFormatInfo dateformat = new DateTimeFormatInfo();
dateformat.FullDateTimePattern = "dddd, mmmm dd, yyyy h:mm:ss tt";// Date format of en-us
ci.DateTimeFormat = dateformat;
CultureAndRegionInfoBuilder obj = new CultureAndRegionInfoBuilder("fr-ca", CultureAndRegionModifiers.Replacement);
obj.LoadDataFromCultureInfo(ci);
obj.Register();
一旦代码注册了新的fr-ca,fr-ca的日期格式将与en-us的相同。 该代码可以在Page_Load中使用。
【讨论】:
令人惊讶的是,我得到了一个非常简单的答案。在设置 Culture 和 UICulture 时,我需要做的就是将 Culture 属性设置为始终 en-us。这将导致始终以英文显示日期格式。
【讨论】:
这是代码片段中的上述代码:
CultureInfo ci = new CultureInfo("fr-ca");
DateTimeFormatInfo dateformat = new DateTimeFormatInfo();
dateformat.FullDateTimePattern = "dddd, mmmm dd, yyyy h:mm:ss tt";// Date format of en-us
ci.DateTimeFormat = dateformat;
CultureAndRegionInfoBuilder obj = new CultureAndRegionInfoBuilder("fr-ca", CultureAndRegionModifiers.Replacement);
obj.LoadDataFromCultureInfo(ci);
obj.Register();
【讨论】:
在字符串上显示日期时,请执行以下操作:
CultureInfo ci = new CultureInfo("en-US");
string s = dateTimeObject.ToString(ci);
这是一个简化的示例,但您只需要在 DateTime 对象上做您想做的必要工作。
【讨论】: