Pregunta

He escrito una aplicación asp.net y una de mis rutinas de devolución de datos simplemente guarda los datos de formulario enviados por el usuario en un sql 2005 db. Todo funciona bien en mi máquina de desarrollo, pero cuando lo implemento en el sitio activo, obtengo fechas no válidas de mi verificador de fechas de análisis.

Básicamente, se espera un formato de fecha americana en la máquina en vivo, pero esto no es lo que quiero. El usuario debe poder ingresar en el formato dd / MM / aaaa. Por lo tanto, una fecha válida como 21/10/2009 devuelve errores en el servidor en vivo pero no en mi máquina dev. A continuación se muestra el código que arroja la excepción.

DateTime dt;
dt = DateTime.Parse(sdate);  
//sdate in GB dd/MM/yyyy format

¿Es posible forzar la rutina de análisis para esperar la fecha en formato dd / MM / aaaa?

¿Fue útil?

Solución

Haz como esto:

    System.Globalization.CultureInfo cultureinfo = 
        new System.Globalization.CultureInfo("en-gb");
    DateTime dt = DateTime.Parse("13/12/2009", cultureinfo);

Otros consejos

Puede usar DateTime.ParseExact para especificar un formato esperado.

Otra opción es especificar la cultura que desea utilizar en el archivo web.config:

<system.web>
    ...
    <globalization 
        culture="da-DK" 
        uiCulture="da-DK" requestEncoding="utf-8" responseEncoding="utf-8"
    />
</system.web>

Sí, ParseExact hará eso como lo menciona Matt.

El código sería algo así como:

dt  = DateTime.ParseExact(sdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top