使用fr_CA文化进行日期格式化时出现异常。
DateTime.ToString("g")
返回" YYYY-MM-DD 00:00"格式因为" YYYY-MM-DD"是加拿大官方的日期格式。
问题是这种格式根本没有被法语和英语使用!!
所以我的问题是:有没有办法绕过DateTime.ToString(string format)
的默认实现,以便我可以使用" dd / mm / yyyy"相反,对应于实际使用的fr_CA?所有其他文化的默认实施。
是否可以不使用其他方法名称来实现?
答案 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;