Как создать локализованную строку даты с помощью 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;
  }

person Keith    schedule 27.04.2011    source источник


Ответы (2)


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

person davidsleeps    schedule 27.04.2011
comment
Спасибо. Приведенный выше код работает. И да, я буду передавать коды языков в качестве параметров для создания локализованных строк даты для различных международных языков. - person Keith; 27.04.2011
comment
Я немного поздно спрашивал, но у вас есть ссылка на MSDN? - person Steve; 06.06.2015
comment
@ Стив, я думаю, это было просто для примера. Мы не ограничены форматом d. И если sb хочет использовать другой формат, я приведу следующую статью для справки: Строки пользовательского формата даты и времени - person richardsonwtr; 05.08.2020

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

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

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

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

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

person GregC    schedule 27.04.2011
comment
Спасибо за приведенные выше примеры. Они будут очень полезны при форматировании строк даты для наших разных международных языков. - person Keith; 27.04.2011
comment
Я только что попытался проголосовать, но похоже, что мне нужно 15 репутации, чтобы проголосовать. Извините, я все еще новичок в StackOverflow. :-| - person Keith; 27.04.2011