这是代码。我仍然得到不正确的结果
string srRegisterDate = "25.07.2009 00:00:00"
CultureInfo culture = new CultureInfo("en-US");
srRegisterDate = String.Format("{0:dddd, MMMM d, yyyy}", Convert.ToDateTime(srRegisterDate), culture);
结果是 Cumartesi, Temmuz 25, 2009
应该是 2009 年 7 月 25 日,星期六
我该如何修复这个错误?
C#.net v4.5.2
最佳答案
Convert.ToDateTime(srRegisterDate)
仍然 使用您的 CurrentCulture
它看起来像基于日期和月份名称的 tr-TR
。 Cumartesi - Temmuz
在 String.Format
中,您的区域性将被忽略,因为您将它用作第三个参数作为参数,但您从未使用过它。
您的代码称为 Format(string format, object arg0, object arg1)
重载。但是您从不使用 arg1
。这种重载并不认为这是一种文化。它认为这是您要格式化的另一个参数。
此 String.Format
有一个重载,将 IFormatProvider
作为第一个 参数。
-
Format(IFormatProvider, String, Object)
-
Format(IFormatProvider, String, Object[]
) -
Format(IFormatProvider, String, Object, Object
) -
Format(IFormatProvider, String, Object, Object, Object)
例如;
srRegisterDate = String.Format(culture, "{0:dddd, MMMM d, yyyy}", Convert.ToDateTime(srRegisterDate));
但最常见的方式(我总是喜欢)得到你想要的结果是使用 .ToString()
方法,比如;
srRegisterDate = Convert.ToDateTime(srRegisterDate).ToString("dddd, MMMM d, yyyy", culture);
关于c# - 将 datetime 解析为具有英语文化的月日时,仍将其解析为土耳其语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30261275/