2011-06-14 8 views
127

Quiero que mi fecha y hora que se convierte en una cadena que está en formato "dd/mm/aaaa"¿Por qué DateTime.ToString ("dd/MM/yyyy") me da dd-MM-aaaa?

Cada vez que me convierto usando DateTime.ToString("dd/MM/yyyy"), consigo dd-MM-yyyy lugar.

¿Hay algún tipo de información cultural que deba establecer?

+0

hacer DateTime.ToString ("dd/mm/aaaa"); – jimplode

+1

Lo hice, no funcionó, el problema no son las fechas, es el "-", quiero que sea un "/" como he especificado – Diskdrive

+7

use MM en vez de mm - el mm representa los minutos y no meses – ThePower

Respuesta

194

raya vertical es un delimitador de la fecha, de manera que se utilice el delimitador actual fecha de la cultura.

Si desea codificar que se utilizará siempre la barra, se puede hacer algo como esto:

DateTime.ToString("dd'/'MM'/'yyyy") 
+1

Estas no son barras diagonales – spender

+1

@spender - en algunas culturas lo son. –

+0

gracias por su respuesta rápida. Tiene razón. Le daré la respuesta correcta – Diskdrive

44

Pass CultureInfo.InvariantCulture como el segundo parámetro de DateTime, devolverá la cadena como lo desea, incluso un formato muy especial:

DateTime.Now.ToString("dd|MM|yyyy", CultureInfo.InvariantCulture) 

volverá: 28 | 02 | 2014

+0

Este código es más claro que en la respuesta aceptada (me refiero a CultureInfo agregado). Se ve al menos mejor que escapar barras por apóstrofes. – Sergey

+0

Este es definitivamente el mejor enfoque, gracias. – Arwin

+1

Definitivamente más fácil de leer que usar caracteres de escape. ¡Estoy un poco sorprendido de que no supiera todo el tiempo que mis formatos de fecha iban a sobrescribirse! – Savage

6

Añadir CultureInfo.InvariantCulture como argumento:

using System.Globalization; 

... 

var dateTime = new DateTime(2016,8,16); 
dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); 

volveremos: el

"16/08/2016" 
+0

si el desarrollador usa el método tostring con algunas letras como M m ss, etc. obtendrá un resultado incorrecto con su solución por ejemplo Datetime.Now.ToString ("aaaa/dd/mm/Month", CultureInfo.InvariantCulture) no dará como resultado 2017/01/02/Month resultará 2017/01/02/2onth –

+0

@OkanSARICA si desea sufijo la fecha con "/ mes" debe hacerlo después del método ToString en su lugar. DateTime.Now.ToString ("aaaa/MM/dd", CultureInfo.InvariantCulture) + "/ Month"; –

Cuestiones relacionadas