Как создать локализованную строку даты с CultureInfo - PullRequest
24 голосов
/ 27 апреля 2011

У меня есть следующий код, который создает строку даты в формате en-us. Я хотел бы передать LCID (или эквивалентное значение для локализованного языка), чтобы создать локализованную версию строки даты. Как мне это сделать?

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

Ответы [ 2 ]

47 голосов
/ 27 апреля 2011

Вы можете использовать второй аргумент для функции toString и использовать любой нужный вам язык / культуру ...

Вы можете использовать формат "d" вместо ToShortDateString в соответствии с MSDN ...

Так что, в основном, что-то вроде этого, чтобы вернуться в австралийский английский:

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

вы можете изменить свой метод, включив в него параметр языка и культуры

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

Редактировать
Вы также можете посмотреть на перегруженный метод tryParse , если вам нужно проанализировать строку для определенного языка / культуры ...

6 голосов
/ 27 апреля 2011

Используйте перегрузку ToString () вместо метода ToShortDateString ().Укажите IFormatProvider.

Это должно быть полезно при формировании определенной строки даты и времени:

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

Это должно помочь при локализации:

Как вы работаете с локализацией / CultureInfo

...