DateTime.ToString(" g")fr_CA

时间:2014-03-11 18:32:04

标签: c# datetime formatting

使用fr_CA文化进行日期格式化时出现异常。

DateTime.ToString("g")返回" YYYY-MM-DD 00:00"格式因为" YYYY-MM-DD"是加拿大官方的日期格式。 问题是这种格式根本没有被法语和英语使用!!

所以我的问题是:有没有办法绕过DateTime.ToString(string format)的默认实现,以便我可以使用" dd / mm / yyyy"相反,对应于实际使用的fr_CA?所有其他文化的默认实施。

是否可以不使用其他方法名称来实现?

1 个答案:

答案 0 :(得分:2)

您可以根据具体情况处理此问题。如果文化是fr-CA,请在应用启动时将其替换为修改过的副本:

if (Thread.CurrentThread.CurrentCulture.Name == "fr-CA")
{
    var frca = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
    frca.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
    Thread.CurrentThread.CurrentCulture = frca;
}

对于“自定义”所需的任何文化都要这样做。

请注意,新线程仍将以系统定义的文化开头;如果您使用的是.NET 4.5或更高版本,则可以使用DefaultThreadCurrentCulture属性覆盖该行为:

CultureInfo.DefaultThreadCurrentCulture = frca;