在文化发展的同时,将日期格式更改为en-us

我正在用法语本地化一个网站。 但是我不应该将日期格式更改为法语。 它必须按照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"); 

每当您向页面写入日期时,请使用以下语法:

 myDate.ToString("d", culture); 

要么

 string.Format( culture, "This is a string containing a date: {0:d}", myDate); 

CultureInfo类驻留在System.Globalization命名空间中,上面的d是输出日期的格式。 有关格式字符串的更多信息, 请参阅John Sheehan的“.NET格式字符串快速参考”备忘单 。

在字符串上,当您显示日期时,请执行以下操作:

 CultureInfo ci = new CultureInfo("en-US"); string s = dateTimeObject.ToString(ci); 

这是一个简化的示例,但是,您只需要在DateTime对象上执行必要的工作。

多谢你们 !!!! 好像你的sugessions正在为我工​​作。 我尝试创建一个自定义文化,扩展了fr-ca的function,并将其日期格式更改为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中使用。

就我而言,这就是我所做的。 我必须设置应用程序的语言,还要确定语言是否是从右到左的语言,还需要保持标准的日期时间格式。 这就是我所做的:

 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; 

以下是代码snipet中的上述代码:

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

令人惊讶的是,我有一个非常简单的答案 在设置文化和UICulture时,我需要做的就是始终将文化属性设置为en-us。 这将导致始终以英语显示日期格式。