c# - yyyy - gridview format date




¿Cómo arreglar el formato de fecha en ASP.NET BoundField(DataFormatString)? (5)

Determine el tipo de datos de su columna de origen de datos, "CreateDate". Asegúrese de que esté produciendo un campo de fecha y hora real y no algo como una varchar. Si su fuente de datos es un procedimiento almacenado, es completamente posible que se esté procesando CreateDate para producir un varchar para formatear la fecha, de esta manera:

SELECT CONVERT(varchar,TableName.CreateDate,126) AS CreateDate 
FROM TableName ...

El uso de CONVERT de esta forma se hace a menudo para que los resultados de la consulta cumplan los requisitos de cualquier otro código que vaya a procesar esos resultados. Style 126 tiene el formato ISO 8601, un estándar internacional que funciona con cualquier configuración de idioma. No sé cuál es su industria, pero probablemente fue intencional. No quieres meterte con eso. ¡Este estilo (126) produce una representación en cadena de una fecha con el formato '2013-04-29T18: 15: 20.270' tal como lo informó! Sin embargo, si CreateDate se ha procesado de esta manera, entonces no hay manera de que puedas obtener tu bf1.DataFormatString para que muestre "29/04/2013" en su lugar. Primero debe comenzar con una columna de tipo datetime en su fuente de datos SQL original primero para que bf1 la consuma adecuadamente. Así que solo agréguelo a la consulta de la fuente de datos y llámelo con un nombre diferente como CreateDate2 para no molestar a cualquier otro código que ya dependa de CreateDate, como este:

SELECT CONVERT(varchar,TableName.CreateDate,126) AS CreateDate, 
       TableName.CreateDate AS CreateDate2
FROM TableName ...

Luego, en tu código, deberás vincular bf1 a "CreateDate2" en lugar de la original "CreateDate", de esta forma:

BoundField bf1 = new BoundField();
bf1.DataField = "CreateDate2";
bf1.DataFormatString = "{0:dd/MM/yyyy}";
bf1.HtmlEncode = false;
bf1.HeaderText = "Sample Header 2";

dv.Fields.Add(bf1);

Voila! ¡Tu fecha ahora debería mostrar "29/04/2013" en su lugar!

Tengo un BoundField dinámico (para un DetailsView) con el siguiente código:

BoundField bf1 = new BoundField();
bf1.DataField = "CreateDate";
bf1.DataFormatString = "{0:dd/MM/yyyy}";
bf1.HtmlEncode = false;
bf1.HeaderText = "Sample Header 2";

dv.Fields.Add(bf1);

Pero de alguna manera, todavía muestra el formato incorrecto: 2013-04-29T18: 15: 20.270.

¿De alguna manera podría arreglar esto para que muestre "29/04/2013" en su lugar? Gracias por tu ayuda.


El formateo depende de la configuración cultural del servidor. Si usa en-US cultura en-US , puede usar el Patrón de fecha corta como {0:d}

Por ejemplo, formatea 6/15/2009 1:45:30 a 6/15/2009

Puede consultar más formatos en BoundField.DataFormatString



Tuve el mismo problema, solo necesito mostrar fechas cortas (sin el tiempo), además era necesario tener configuraciones de múltiples idiomas, así que depende del idioma, muestra dd-mm-aaaa o mm-dd-aaaa.

Finalmente, utilizando DataFormatString="{0:d} , todo funciona bien y muestra solo la fecha con el formato de cultura.


https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.boundfield.dataformatstring(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1 


In The above link you will find the answer

**C or c**

    Displays numeric values in currency format. You can specify the number of decimal places.
    Example:

Format: {0:C}
123.456 -> $123.46

**D or d**

    Displays integer values in decimal format. You can specify the number of digits. (Although the type is referred to as "decimal", the numbers are formatted as integers.)
    Example:
        Format: {0:D}
    1234 -> 1234
    Format: {0:D6}
    1234 -> 001234

    **E or e**
    Displays numeric values in scientific (exponential) format. You can specify the number of decimal places.
    Example:
    Format: {0:E}
    1052.0329112756 -> 1.052033E+003
    Format: {0:E2}
    -1052.0329112756 -> -1.05e+003

**F or f**
Displays numeric values in fixed format. You can specify the number of decimal places.
Example:
Format: {0:F}
1234.567 -> 1234.57
Format: {0:F3}
1234.567 -> 1234.567

**G or g**
Displays numeric values in general format (the most compact of either fixed-point or scientific notation). You can specify the number of significant digits.
Example:
Format: {0:G}
-123.456 -> -123.456
Format: {0:G2}
-123.456 -> -120

F or f
Displays numeric values in fixed format. You can specify the number of decimal places.
Format: {0:F}
1234.567 -> 1234.57
Format: {0:F3}
1234.567 -> 1234.567

G or g
Displays numeric values in general format (the most compact of either fixed-point or scientific notation). You can specify the number of significant digits.
Format: {0:G}
-123.456 -> -123.456
Format: {0:G2}
-123.456 -> -120

N or n
Displays numeric values in number format (including group separators and optional negative sign). You can specify the number of decimal places.
Format: {0:N}
1234.567 -> 1,234.57
Format: {0:N4}
1234.567 -> 1,234.5670

P or p
Displays numeric values in percent format. You can specify the number of decimal places.
Format: {0:P}
1 -> 100.00%
Format: {0:P1}
.5 -> 50.0%

R or r
Displays Single, Double, or BigInteger values in round-trip format.
Format: {0:R}
123456789.12345678 -> 123456789.12345678

X or x
Displays integer values in hexadecimal format. You can specify the number of digits.
Format: {0:X}
255 -> FF
Format: {0:x4}
255 -> 00ff




.net