2011-06-15 19 views
19

Si hago esto en C#:C formato # fecha está perdiendo separadores de barra

Console.WriteLine(DateTime.Now.ToString("ddd M/dd/yy")); 

Yo esperaría salida como esta:

Wed 6/15/11 

Pero lo que realmente da salida a esto:

Wed 6 15 11 

¿Por qué desaparecen las barras? ¿Hay alguna manera de evitar esto y tener la fecha de salida en el formato esperado?

+1

Obtengo las barras con su cadena de formato. ¿Cuál es la cultura bajo la que te estás ejecutando? – Oded

+0

Copié tu código y lo ejecuté con Snippet Compilador. Salió 'Wed 15/06/11'. –

+0

Este problema solo parece ocurrir en Windows 7 cuando cambia el formato de fecha corta a "ddd M/dd/aa". –

Respuesta

42
Console.WriteLine(DateTime.Now.ToString("ddd M/dd/yy", CultureInfo.InvariantCulture)); 
      Console.ReadLine(); 

tratar lo anterior

+3

Esto parece funcionar, ¿por qué se requiere CultureInfo.InvariantCulture aquí? –

+8

@Jon - Porque si no se especifica 'CultureInfo', se usará la cultura actual. Si se trata de un cultivo que no utiliza barras como separadores en las fechas (y la cadena de formato especifica que el separador de fechas sea un '/', que se sustituye por el separador de fecha de cultivo real). – Oded

+1

basado en http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.invariantculture.aspx Supongo que parece que su cultureinfo está cambiando el "/" a "" – David

-3

creo que debe ser así:

string.format("{0:ddd M/dd/yy}", DateTime.Now); 
+1

¿Cuál es la diferencia entre esto y mi código? Ambos toman la fecha actual y la formatean usando la cadena proporcionada, ¿verdad? –

+0

@Jon, parece que lo estás haciendo bien, sugiero probar la respuesta de Dvd Prd. –

18

También es posible usar

Console.WriteLine(dateTime.ToString("ddd M'/'dd'/'yy")); 

Esa es una posible solución si no se está usando la cultura invariante como se menciona en otras respuestas aquí.

2

El comportamiento predeterminado de "/" (barra inclinada) en un argumento de formato es utilizar el separador de fecha de referencia cultural de la corriente.

Para forzar el "/" (barra inclinada), debe precederlo con una "\" (barra invertida).

Ej .: "aaaa/MM/dd" siempre mostrará una fecha como "2015/07/02", independientemente de la cultura actual en uso.

Saludos

+0

Muy buen detalle :) utilizando su solución junto con "Culture.Invariant" garantizará al 100% que su fecha tiene el formato exacto que ha especificado :) –