获取错误的日期时间格式

时间:2012-12-05 14:35:49

标签: c# string-formatting

我有这个:

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

但dateString是13.05.2011而不是13/05/2011。你能救我吗?

7 个答案:

答案 0 :(得分: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)

所以你必须将文化从德语改为英语!

你可以写:

date.ToString(new CultureInfo("en-EN"));

答案 1 :(得分:3)

您可以使用DateTime.ToString代替CultureInfo.InvariantCulture

var dateString = date.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

/替换为.的原因是/ is a custom format specifier

  

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

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

var dateString = date.ToString("dd'/'MM'/'yyyy");

为什么这更合适?因为你仍然可以应用当地文化,f.e。如果要输出月份名称,但无论如何都要强制/作为日期分隔符。

答案 2 :(得分:2)

试试这个:

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

另请查看Steve X的网站格式:   http://blog.stevex.net/string-formatting-in-csharp/

答案 3 :(得分:2)

如果您想强制使用日期分隔符而不管文化,您可以将其转义,例如:

var dateString = string.Format(@"{0:dd\/MM\/yyyy}", date);

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

答案 4 :(得分:2)

只需尝试

var dateString = date.ToString("dd/MM/yyyy", new System.Globalization.CultureInfo("en-GB"));

答案 5 :(得分:1)

这似乎是一个日期分隔符问题。使用它;

String.Format("{0:d/M/yyyy}", date);

检查String Format DateTime并查看DateTimeFormatInfo.DateSeperator属性。

答案 6 :(得分:1)

试试这个:

var dateString = string.Format("{0:dd/MM/yyyy}", DateTime.Today, new System.Globalization.CultureInfo("en-GB"));