2016-03-31 15 views
6

Sto solo chiedendo perché questo codiceformato stringa restituisce il risultato inaspettato

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

sia ritorna 03 31 2016 al posto del 2016/03/31.

+2

Quali sono le impostazioni CultureInfo per _CultureInfo.CurrentCulture.DateTimeFormat.DateSeparator_ – Steve

risposta

8

/ è un format specifier che viene trasformato nel separatore di data localizzato. O avvolgerlo in apostrofi o utilizzare il sovraccarico con DateTimeFormatInfo.InvariantInfo.

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

o con String.Format:

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

È anche possibile utilizzare al posto di CultureInfo.InvariantCultureDateTimeFormatInfo.InvariantInfo.

0

La risposta di Tim è eccezionale. Si potrebbe anche usare C# v6 stringa di interpolazione:

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