Mon*_*RPG 7 c# string culture datetime string-formatting
这是代码.我仍然得到不正确的结果
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);
Run Code Online (Sandbox Code Playgroud)
结果是 Cumartesi, Temmuz 25, 2009
相反它应该是 Saturday, July 25, 2009
我该如何解决这个错误?
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));
Run Code Online (Sandbox Code Playgroud)
但大多数comman方式(我总是喜欢)得到你想要的结果就是使用.ToString()方法;
srRegisterDate = Convert.ToDateTime(srRegisterDate).ToString("dddd, MMMM d, yyyy", culture);
Run Code Online (Sandbox Code Playgroud)
问题是因为忽略了中的文化值,String.Format而不是将字符串转换为DateTime.
你需要:
srRegisterDate = String.Format(culture, "{0:dddd, MMMM d, yyyy}", Convert.ToDateTime(srRegisterDate));
Run Code Online (Sandbox Code Playgroud)
您当前调用String.Formatutalizes 重载String.Format Method (String, Object[]),culture传入的参数被视为为占位符传递的简单对象参数。由于没有占位符,您甚至不会看到它被忽略。
如果你想culture使用,String.Format那么你必须使用重载:Format(IFormatProvider, String, Object)或String.Format Method (IFormatProvider, String, Object[])
| 归档时间: |
|
| 查看次数: |
720 次 |
| 最近记录: |