Формат даты и времени C #, который включает дату / месяц / год, а не день - PullRequest
2 голосов
/ 18 декабря 2009

Я хочу использовать стандартный формат даты, который отображает дату, месяц и год в стандартных региональных настройках компьютера. Однако я мог только найти "D", который перечисляет день вместе с датой-месяц-год. Можно ли как-нибудь убрать из него день или каким-либо другим способом получить желаемый результат?

DateTime date1 = new DateTime(2008, 4, 10);
Console.WriteLine(date1.ToString("D", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008   

Примечание. Я не хочу использовать пользовательский формат (d MMMM гггг), поскольку хочу, чтобы региональные настройки заказа сохранялись.

Ответы [ 5 ]

5 голосов
/ 18 декабря 2009

вы можете использовать это для вашего случая:

DateTimeFormatInfo myDTFI = new CultureInfo("en-US", false).DateTimeFormat;
string str = (new DateTime(2008, 4, 10)).ToString(myDTFI.LongDatePattern.Replace("dddd", ""));
4 голосов
/ 18 декабря 2009

Если вы используете один из стандартных форматов, то что будет отображаться, будет зависеть от культуры в любом случае - так что даже если вы найдете что-то, что не отображает день недели в en-US, это может по-прежнему отображать его в других культурах.

Полагаю, вы могли бы найти DateTimeFormatInfo для культуры, найти ее LongDatePattern и затем удалить любое вхождение единственного "d" из строки этого формата. Хотя это было бы довольно неприятно.

4 голосов
/ 18 декабря 2009

попробуйте это:

date1.ToString("d", CultureInfo.CreateSpecificCulture("en-US"))

Он вернет то, что вы хотите !!

3 голосов
/ 18 декабря 2009

Вы должны использовать «d» вместо «D», чтобы получить желаемый результат.

2 голосов
/ 24 сентября 2013

Во многих культурах есть несколько шаблонов длинных дат, и вы можете выбрать из них первый, в котором отсутствует шаблон дня недели:

    static void Main(string[] args)
    {
        foreach (var cultureInfo in System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures))
        {
            string longDateWithoutDayOfWeek = null;
            foreach (var pattern in cultureInfo.DateTimeFormat.GetAllDateTimePatterns('D'))
            {
                if (!pattern.Contains("ddd"))
                {
                    longDateWithoutDayOfWeek = pattern;
                    break;
                }
            }

            bool isFallbackRequired = string.IsNullOrEmpty(longDateWithoutDayOfWeek);
            if (isFallbackRequired)
            {
                longDateWithoutDayOfWeek = cultureInfo.DateTimeFormat.ShortDatePattern;
            }
            System.Console.WriteLine("{0} - {1} {2}", cultureInfo.Name, longDateWithoutDayOfWeek, (isFallbackRequired) ? " (short)" : string.Empty);
        }
    }

В качестве альтернативы вы можете использовать Windows.Globalization.DateTimeFormatting.DateTimeFormatter с шаблоном "day month year".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...