Форматирование даты и времени в C#

Для преобразования значения DateTime в строковое значение в C# может использоваться методToString, который, в свою очередь, может принимать в качестве входных параметров различные описатели форматов. Сегодня мы рассмотрим более подробно форматирование даты и времени в C#.

Строки стандартных форматов даты и времени в C#

Строка стандартного формата даты и времени — это специальная строка, состоящая из одного символа и применяемая для форматирования даты/времени в строковое значение в соответствии с заданным форматом.

Строка стандартного формата содержит всегда один символ. Если вы попытаетесь передать в качестве формата два и более символа, то C# интерпретирует такую строку как пользовательский формат даты/времени.  В таблице ниже представлены стандартные форматы даты и времени, которые вы можете использовать в C#.

Описатель формата Описание Примеры
«d» Короткий шаблон даты. 04.11.2022
«D» Полный шаблон даты. 4 ноября 2022 г.
«f» Полный шаблон даты и времени (короткий шаблон времени).  4 ноября 2022 г. 19:27
«F» Полный шаблон даты и времени (полный шаблон времени). 4 ноября 2022 г. 19:27:32
«g» Общий шаблон даты и времени (короткий шаблон времени). 04.11.2022 19:27
«G» Общий шаблон даты и времени (полный шаблон времени). 04.11.2022 19:27:32
«M», «m» Шаблон дней месяца. 4 ноября
«O», «o» Шаблон обратного преобразования даты и времени. 2022-11-04T19:27:32.6607880+06:00
«R», «r» Шаблон RFC1123. Fri, 04 Nov 2022 19:27:32 GMT
«s» Сортируемый шаблон времени и даты. 2022-11-04T19:27:32
«t» Короткий шаблон времени. 19:27
«T» Полный шаблон времени. 19:27:32
«u» Универсальный сортируемый шаблон времени и даты. 2022-11-04 19:27:32Z
«U» Универсальный полный шаблон даты и времени. 4 ноября 2022 г. 13:27:32
«Y», «y» Шаблон месяца года.  ноябрь 2022 г.

Следует отметить, что на итоговое строковое значение даты и времени в C# также оказывают влияние и региональные настройки. Например, воспользуемся коротким шаблоном даты и выведем строковое значение даты для русской (ru-RU) и, например, английской локали (en-US). Для этого воспользуемся перегруженным методом ToString(), который в качестве второго параметра принимает значение CultureInfo:

 

Console.WriteLine($"ru-RU: {dateTime.ToString("d", CultureInfo.GetCultureInfo("ru-RU"))}");
Console.WriteLine($"en-US: {dateTime.ToString("d", CultureInfo.GetCultureInfo("en-US"))}");

В консоли мы получим следующий вывод:

ru-RU: 04.11.2022
en-US: 11/4/2022

Настраиваемые форматы даты и времени в C#

Не всегда удобно использовать какие-либо стандартные форматы даты и времени. Например, при разработки Web API вам может потребоваться, чтобы дата/время передавались в ваше метод в строго определенном формате, который будет отличен от всех имеющихся стандартных форматов (например, строка даты не должна содержать ничего кроме чисел). В этом случае, нам необходимо использовать настраиваемые форматы даты/времени в C#.

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

Описатель формата Описание
«d» День месяца, в диапазоне от 1 до 31.
«dd» День месяца, в диапазоне от 01 до 31.
«ddd» Сокращенное название дня недели.
«dddd» Полное название дня недели.
«f» Десятые доли секунды в значении даты и времени.
«ff» Сотые доли секунды в значении даты и времени.
«fff» Тысячные доли секунды в значении даты и времени.
«ffff» Десятитысячные доли секунды в значении даты и времени.
«fffff» Стотысячные доли секунды в значении даты и времени.
«ffffff» Миллионные доли секунды в значении даты и времени.
«fffffff» Десятимиллионные доли секунды в значении даты и времени.
«F» Если ненулевое значение, то десятые доли секунды в значении даты и времени.
«FF» Если ненулевое значение, то сотые доли секунды в значении даты и времени.
«FFF» Если ненулевое значение, то тысячные доли секунды в значении даты и времени.
«FFFF» Если ненулевое значение, то десятитысячные доли секунды в значении даты и времени.
«FFFFF» Если ненулевое значение, то стотысячные доли секунды в значении даты и времени.
«FFFFFF» Если ненулевое значение, то миллионные доли секунды в значении даты и времени.
«FFFFFFF» Если ненулевое значение, то десятимиллионные доли секунды в значении даты и времени.
«g», «gg» Период или эра.
«h» Час в 12-часовом формате от 1 до 12.
«hh» Час в 12-часовом формате от 01 до 12.
«H» Час в 24-часовом формате от 0 до 23.
«HH» Час в 24-часовом формате от 00 до 23.
«K» Данные о часовом поясе.
«m» Минуты, в диапазоне от 0 до 59.
«mm» Минуты, в диапазоне от 00 до 59.
«M» Месяц, в диапазоне от 1 до 12.
«MM» Месяц, в диапазоне от 01 до 12.
«MMM» Сокращенное название месяца.
«MMMM» Полное название месяца.
«s» Секунды, в диапазоне от 0 до 59.
«ss» Секунды, в диапазоне от 00 до 59.
«t» Первый символ указателя AM/PM (до полудня/после полудня).
«tt» Указатель AM/PM
«y» Год, в диапазоне от 0 до 99.
«yy» Год, в диапазоне от 00 до 99.
«yyy» Год в виде как минимум трех цифр.
«yyyy» Год в виде четырехзначного числа.
«yyyyy» Год в виде пятизначного числа.
«z» Часовой сдвиг от времени в формате UTC (универсального времени), без нулей в начале.
«zz» Часовой сдвиг от времени в формате UTC (универсального времени) с нулями в начале для значений из одной цифры.
«zzz» Сдвиг в часах и минутах от времени в формате UTC (универсального времени).
«:» Разделитель компонентов времени.
«/» Разделитель компонентов даты.
string Буквенный разделитель строк.
% Задает следующий символ в качестве настраиваемого описателя формата.
\ Escape-символ.

Используя различные сочетания описателей формата, мы можем форматировать дату и время в C# так, как нам это необходимо. Например,

Console.WriteLine($"{dateTime.ToString("Месяц: MM число: dd день недели: dddd")}");
Console.WriteLine($"{dateTime.ToString("ddMMyyyy")}");

Результат:

Месяц: 11 число: 04 день недели: пятница
04112022

Можно заметить, что часть настраиваемых форматов даты и времени совпадает с аналогичными стандартными форматами, например, формат «d«. В этом случае, если вы хотите указать d именно, как пользовательский формат, то необходимо использовать в строке формата символ %:

Console.WriteLine($"{dateTime.ToString("d")}");
Console.WriteLine($"{dateTime.ToString("%d")}");

В первом случае мы использовали стандартный формат, а во втором — пользовательский:

04.11.2022
4

Итого

Для представления строкового значения даты времени (форматирования даты и времени) в C# используется метод ToString, который в качестве параметров может принимать как стандартные, так и пользовательские форматы даты и времени в C#. Также, в метод ToString можно передавать дополнительные параметры и форматировать дату и время, используя различные региональные настройки, отличные от используемых по умолчанию.

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии