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

时间:2010-03-25 06:32:24

标签: c# internationalization

我正致力于用法语本地化网站。但是我不应该将日期格式更改为法语。它必须按照en-us格式保留,即使文化设置为fr-ca,即当其他内容使用法语时,日期格式仍应为英语(en-us)。

6 个答案:

答案 0 :(得分:9)

要根据现有的CultureInfo(在您的情况下为“fr-CA”)更改日期的格式,您可以create a custom CultureInfo,仅修改日期格式。我对此没有任何经验,但链接的aricle和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了解有关格式字符串的更多信息。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:2)

谢谢大家!!!! 好像你的sugessions对我有用。 我尝试创建一个自定义文化,扩展了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中使用。

答案 3 :(得分:2)

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

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;

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

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