String Format返回意外结果

时间:2016-03-31 13:09:53

标签: c# visual-studio-2015

我只是想知道为什么这段代码

DateTime.Now.ToString("MM/dd/yyyy"); and String.Format("{0: MM/dd/yyyy}", DateTime.Now);

均返回03 31 2016而不是03/31/2016。

2 个答案:

答案 0 :(得分:8)

/format specifier,它会转换为您的本地化日期分隔符。将其包装在撇号中或使用DateTimeFormatInfo.InvariantInfo的重载。

Console.WriteLine( DateTime.Now.ToString("MM'/'dd'/'yyyy") );  
Console.WriteLine( DateTime.Now.ToString("MM/dd/yyyy", DateTimeFormatInfo.InvariantInfo) );   

String.Format

Console.WriteLine( String.Format("{0:MM'/'dd'/'yyyy}", DateTime.Now) );
Console.WriteLine( String.Format(DateTimeFormatInfo.InvariantInfo, "{0:MM/dd/yyyy}", DateTime.Now) );

您也可以使用CultureInfo.InvariantCulture代替DateTimeFormatInfo.InvariantInfo

答案 1 :(得分:0)

蒂姆的回答太棒了。你也可以使用c#v6字符串插值:

var x = DateTime.Now.ToString($"MM/dd/yyyy");
var y = $"{DateTime.Now: MM/dd/yyyy}";