在文化发展的同时,将日期格式更改为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。 这将导致始终以英语显示日期格式。