获取错误的日期时间格式

kar*_*una 1 c# string-formatting

我有这个:

var dateString = string.Format("{0:dd/MM/yyyy}", date);
Run Code Online (Sandbox Code Playgroud)

但dateString是13.05.2011而不是13/05/2011.你能帮助我吗?

Oba*_*ama 5

// date separator in german culture is "." (so "/" changes to ".")
String.Format("{0:d/M/yyyy HH:mm:ss}", dt); // "9/3/2012 16:05:07" - english (en-US)
String.Format("{0:d/M/yyyy HH:mm:ss}", dt); // "9.3.2012 16:05:07" - german (de-DE)
Run Code Online (Sandbox Code Playgroud)

所以你必须把文化从德语变成英语!

你可以写 :

date.ToString(new CultureInfo("en-EN"));
Run Code Online (Sandbox Code Playgroud)


Tim*_*ter 5

您可以使用DateTime.ToStringwithCultureInfo.InvariantCulture代替:

var dateString = date.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

/被替换的原因.是这/是一个自定义格式说明符

“/”自定义格式说明符表示日期分隔符,用于区分年、月和日。从DateTimeFormatInfo.DateSeparator当前或指定区域性的属性中检索适当的本地化日期分隔符 。

因此,要么使用InvariantCulturewhich/用作日期分隔符,要么 - 更合适的 - 通过将其嵌入其中来转义此格式说明符':

var dateString = date.ToString("dd'/'MM'/'yyyy");
Run Code Online (Sandbox Code Playgroud)

为什么这样更合适?因为您仍然可以应用本地文化,如果您想输出月份名称,则 fe ,但/无论如何您都强制作为日期分隔符。

  • 我认为您的解决方案比设置特定文化更好 (2认同)