Подтвердить что ты не робот

Как создать локализованную строку даты с помощью CultureInfo

У меня есть следующий код, который создает строку даты в формате 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;
  }
4b9b3361

Ответ 1

Вы можете использовать второй аргумент функции 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;
  }

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

Ответ 2

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

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

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

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

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