Как отобразить DateTime с выбранными частями даты, но в порядке FormatProvider? - PullRequest
4 голосов
/ 12 апреля 2010

Я хочу отображать дату в том порядке, который предоставляет культура, но только с теми элементами, которые мне нужны.

Метод DateTime.Tostring () имеет список шаблонов, которые очень полезны , но я бы хотел очень небольшое изменение.

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

var now = DateTime.Now;

string nowString = now.ToString("m", CultureInfo.GetCultureInfo("en-us"));
Console.WriteLine(nowString);

nowString = now.ToString("m", CultureInfo.GetCultureInfo("fr-FR"));
Console.WriteLine(nowString);

отображает:

12 апреля
12 Аврил

Мне бы хотелось, чтобы шаблон отображал сокращение месяца и дня, но сохранял правильный порядок из указанного CultureInfo. при использовании шаблона "MMM dd " сначала всегда будет отображаться сокращение месяца, а затем день, например, с нарушением французского порядка.

Есть ли способ добиться этого без особого кода?

1 Ответ

1 голос
/ 12 апреля 2010

очевидно, Microsoft " принимает " дату, которая будет отформатирована следующим образом:

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("ddd d MMM", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays ven. 29 août

Так что не думайте, что Framework просмотрел что-то для вашего случая.

Вам нужно будет найти обходной путь , например:

private string GetCultureMonthDay(CultureInfo culture, DateTime date)
{
    return string.Format(culture, "{0:" + 
      culture.DateTimeFormat.MonthDayPattern.Replace("MMMM", "MMM") + "}", date);
}

использование:

?Console.WriteLine(GetCultureMonthDay(CultureInfo.GetCultureInfo("fr-FR"), now));
12 avr.

?Console.WriteLine(GetCultureMonthDay(CultureInfo.GetCultureInfo("en-US"), now));
Apr 12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...