我正致力于用法语本地化网站。但是我不应该将日期格式更改为法语。它必须按照en-us格式保留,即使文化设置为fr-ca,即当其他内容使用法语时,日期格式仍应为英语(en-us)。
答案 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。这将导致始终以英语显示日期格式。