C# 当区域性为fr ca时,将日期格式更改为en us

C# 当区域性为fr ca时,将日期格式更改为en us,c#,internationalization,C#,Internationalization,我正在用法语本地化一个网站。但是,我不应该将日期格式更改为法语。即使区域性设置为fr ca,也必须按照en us格式保存,即,当其余内容为法语时,日期格式仍应为英语(en us)。在字符串上,当显示日期时,请执行以下操作: CultureInfo ci = new CultureInfo("en-US"); string s = dateTimeObject.ToString(ci); 不过,这是一个简化的示例,您只需对DateTime对象执行必要的操作。要更改日期的格式,可以基于现有的Cul

我正在用法语本地化一个网站。但是,我不应该将日期格式更改为法语。即使区域性设置为fr ca,也必须按照en us格式保存,即,当其余内容为法语时,日期格式仍应为英语(en us)。

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

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

不过,这是一个简化的示例,您只需对
DateTime
对象执行必要的操作。

要更改日期的格式,可以基于现有的CultureInfo(在您的示例中为“fr CA”),仅修改日期格式。我在这方面没有任何经验,但是链接了aricle并解释了它是如何做到的。据推测,这并不太难

我认为将
System.Threading.Thread.CurrentThread.CurrentCulture
设置为自定义CultureInfo的实例(例如,在Page.Load事件中)应该可以完成这项工作


或者,使用CultureInfo类按字符串指定区域性:

CultureInfo culture = new CultureInfo("en-US");
无论何时向页面写入日期,请使用以下语法:

myDate.ToString("d", culture);

类驻留在
系统中。全球化
命名空间和上面的
d
是输出日期的格式。有关格式字符串的详细信息。

谢谢大家!!!! 看来你的建议对我有用。 我尝试创建一个自定义文化,扩展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相同。
该代码可用于页面加载。

以下是代码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();

令人惊讶的是,我得到了一个非常简单的答案。在设置Culture和UICulture时,我需要做的就是始终将Culture属性设置为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;

如果我这样做的话,我将不得不到处更改代码。这难道不能在全球范围内实现吗?@Nadeem:你可以制作自己的文化信息。看到我更新的答案。非常感谢你,你救了我一天。无论如何,我编辑了您的答案,以便在UI区域性中重置日期时间格式。祝您有个美好的一天!
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;