大约有100种文化不在FullDateTimePattern
中包含星期几。您可以使用类似this的简短程序查看它们:
var cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
foreach (var culture in cultures.OrderBy(x => x.EnglishName))
{
if (!culture.DateTimeFormat.FullDateTimePattern.Contains("dddd"))
{
Console.WriteLine("{0} ({1}): {2}", culture.EnglishName, culture.Name, culture.DateTimeFormat.FullDateTimePattern);
}
}
许多欧洲或欧洲后裔文化不包含它(我看到 Croatian (Croatia) (hr-HR), Danish (Denmark) (da-DK), English (United Kingdom) (en-GB), French (Canada) (fr-CA), Swedish (Sweden) (sv-SE)),此外还有日本、俄罗斯和中国等国家。世界是如此之大,在许多地方,星期几并不被视为日期的一部分。您有两个选择:接受它,或者对于您不喜欢日期格式的任何文化,创建包含您想要的内容的自己的FullDateTimePattern
。
例如,您可以:
public static CultureInfo DanishCultureInfo = InitCultureInfoWithWeek("da-DK");
private static CultureInfo InitCultureInfoWithWeek(string name)
{
var ci = CultureInfo.GetCultureInfo(name);
ci = (CultureInfo)ci.Clone();
ci.DateTimeFormat.FullDateTimePattern = "dddd " + ci.DateTimeFormat.FullDateTimePattern;
ci = CultureInfo.ReadOnly(ci);
return ci;
}
public static CultureInfo GetCultureForPrinting(string name)
{
var ci = CultureInfo.GetCultureInfo(name);
if (string.Equals(name, "da-DK", StringComparison.InvariantCultureIgnoreCase))
{
return DanishCultureInfo;
}
else
{
return CultureInfo.GetCultureInfo(name);
}
}
然后,当您想要使用某种文化去打印东西时,不要使用 CultureInfo.GetCultureInfo()
,而是使用 GetCultureForPrinting()
。