web-dev-qa-db-fra.com

Comment produire une chaîne de date localisée avec CultureInfo

J'ai le code suivant qui produit une chaîne de date au format en-us. Je voudrais passer le LCID (ou une valeur équivalente pour la langue localisée) pour produire la version localisée de la chaîne de date. Comment pourrais-je accomplir cela?

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;
  }
25
Keith

Vous pouvez utiliser le deuxième argument de la fonction toString et utiliser n'importe quelle langue/culture dont vous avez besoin ...

Vous pouvez utiliser le format "d" au lieu de ToShortDateString selon MSDN ...

Donc en gros quelque chose comme ça pour revenir en anglais australien:

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

vous pouvez modifier votre méthode pour inclure la langue et la culture comme paramètre

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;
  }

Modifier
Vous pouvez également consulter la méthode tryParse surchargée si vous devez analyser la chaîne par rapport à une langue/culture particulière ...

48
davidsleeps

Utilisez une surcharge de ToString() au lieu d'une méthode ToShortDateString(). Fournissez un IFormatProvider.

Cela devrait être utile pour former une chaîne de date-heure spécifique:

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

Cela devrait être utile pour les problèmes de localisation:

Comment gérez-vous la localisation/CultureInfo

6
GregC