2015-07-29 11 views
7

Da msdn sembra come posso creare il mio proprio formato con Datetime.ToString() metodo utilizzando M, m, d, y ecc Ma quando ho provato uno che non ha funzionato come previsto, snipped sotto è la questione .DateTime.ToString() C# non funziona come previsto

enter image description here

mi aspettavo 7/29/2015 ma ricevuto 7-29-2015 !!! perché?

+2

Perché [ '/' è il separatore della data configurato sul sistema] (https://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#dateSeparator). Usa ''/'' per una barra letterale. –

+0

@Adil La differenza è '-' e '/' –

+0

possibile duplicato di [Come formattare una data con barre in C#] (http://stackoverflow.com/questions/3684033/how-to-format-a-date -con-slashes-in-c-sharp) – Dzyann

risposta

19

Sembra che il tuo DateSeparator del tuo CurrentCulture sia - ed è per questo che il carattere / si sostituisce ad esso.

"/" custom format specifier ha un significato speciale come sostituire con cultura corrente o separatore di data cultura fornito.

avete alcune opzioni, si sia fuggire con virgolette singole (o \/ in una stringa verbatim letterale) o utilizzare una cultura che ha / come DateSeparator come InvariantCulture.

string s = DateTime.Now.ToString("M'/'d'/'yyyy"); 
string s = DateTime.Now.ToString(@"M\/d\/yyyy"); 
string s = DateTime.Now.ToString("M/d/yyyy", CultureInfo.InvariantCulture); 
+0

ohhhkkkk ... grazie amico .. accetterà quando consentito presto .. :) – yogi

+0

@ yogi No. Si può giocare. Un '/' nella stringa significa "usa il separatore della data del fornitore di formato in questione". Tuttavia, ''/'' o '\ /' significa "include una barra letterale". Quindi o "" M '/' d '/' yyyy "' o '@" M \/d \/yyyy "' andrà bene. –

Problemi correlati