Содержание
Для преобразования значения 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"))}");
В консоли мы получим следующий вывод:
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")}");
Результат:
04112022
Можно заметить, что часть настраиваемых форматов даты и времени совпадает с аналогичными стандартными форматами, например, формат «d
«. В этом случае, если вы хотите указать d
именно, как пользовательский формат, то необходимо использовать в строке формата символ %
:
Console.WriteLine($"{dateTime.ToString("d")}"); Console.WriteLine($"{dateTime.ToString("%d")}");
В первом случае мы использовали стандартный формат, а во втором — пользовательский:
4
Итого
Для представления строкового значения даты времени (форматирования даты и времени) в C# используется метод ToString
, который в качестве параметров может принимать как стандартные, так и пользовательские форматы даты и времени в C#. Также, в метод ToString
можно передавать дополнительные параметры и форматировать дату и время, используя различные региональные настройки, отличные от используемых по умолчанию.