2011-04-27 15 views
20

Tengo el siguiente código que produce una cadena de fecha en el formato en-us. Me gustaría pasar el LCID (o un valor equivalente para el idioma localizado) para producir la versión localizada de la cadena de fecha. ¿Cómo podría lograr esto?Cómo producir una cadena de fecha localizada con CultureInfo

public static string ConvertDateTimeToDate(string dateTimeString) { 

    CultureInfo culture = CultureInfo.InvariantCulture; 
    DateTime dt = DateTime.MinValue; 

    if (DateTime.TryParse(dateTimeString, out dt)) 
    { 
     return dt.ToShortDateString(); 
    } 
    return dateTimeString; 
    } 

Respuesta

39

Usted puede utilizar el segundo argumento la función toString y usa cualquier idioma/cultura que necesites ...

Usted puede utilizar el formato "d" en lugar de ToShortDateString acuerdo con MSDN ...

Así que, básicamente, algo así como para regresar Inglés australiano:

CultureInfo enAU = new CultureInfo("en-AU"); 
dt.ToString("d", enAU); 

podría modificar su método para incluir la lengua y la cultura como un parámetro

public static string ConvertDateTimeToDate(string dateTimeString, String langCulture) { 

    CultureInfo culture = new CultureInfo(langCulture); 
    DateTime dt = DateTime.MinValue; 

    if (DateTime.TryParse(dateTimeString, out dt)) 
    { 
     return dt.ToString("d",culture); 
    } 
    return dateTimeString; 
    } 

Editar
también puede que desee ver en el overloaded tryParse method si necesita para analizar la cadena contra un idioma/cultura en particular ...

+0

Gracias. El código anterior funciona. Y sí, transmitiré códigos de idioma como parámetros para producir cadenas de fechas localizadas para varios idiomas internacionales. – Keith

+0

Llegué un poco tarde para preguntar, pero ¿tiene la referencia de MSDN? – Steve

6

Utilice una sobrecarga de ToString() en lugar de un método ToShortDateString(). Suministre un Proveedor IFormat.

Esto debería ser útil en la formación de una cadena de fecha y hora específica:

http://www.csharp-examples.net/string-format-datetime/

Esto debería ser útil con los problemas de localización:

How do you handle localization/CultureInfo

+0

Gracias por los ejemplos anteriores. Serán muy útiles para formatear las cadenas de fechas de nuestros diferentes idiomas internacionales. – Keith

+0

Acabo de tratar de subir de categoría, pero parece que necesito 15 Reputación para votar. Lo siento, todavía soy un novato en StackOverflow. : - | – Keith

+0

+1, fueron útiles – davidsleeps

Cuestiones relacionadas