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

Доброго времени суток! Эта статья является продолжением той, в которой я рассказывал как можно получить текущее время в программе, написанной на C#… Статья будет содержать справочную информацию. А если конкретнее, то я расскажу о форматировании даты/времени при выводе (а точнее, преобразовании в строку). Сначала я приведу примеры стандартных вариантов форматирования (эти варианты могут закрыть большинство Ваших потребностей), а во второй части, я коснусь пользовательских (кастомных) вариантов форматирования (дающих большее свободы программисту).

И так, как я говорил выше, начну со стандартных вариантов форматирования даты и времени, которые можно использовать в процессе преобразования даты в строку. Ниже, в табличной форме приведены основные стандартные варианты форматирования (в примерах в строку преобразовывается текущая дата/время):

Формат Результат
DateTime.Now.ToString(«D») 22 ноября 2016 г.
DateTime.Now.ToString(«) 22.11.2016
DateTime.Now.ToString(«) 22 ноября 2016 г. 17:19:59
DateTime.Now.ToString(«f») 22 ноября 2016 г. 17:19
DateTime.Now.ToString(«) 22.11.2016 17:19:59
DateTime.Now.ToString(«) 22.11.2016 17:19
DateTime.Now.ToString(«) ноября 22
DateTime.Now.ToString(«) 2016-11-22T17:19:59.2628195+03:00
DateTime.Now.ToString(«) Tue 22 Nov 2016 17:19:59 GMT
DateTime.Now.ToString(«) 2016-11-22T17:19:59
DateTime.Now.ToString(«) 17:19:59
DateTime.Now.ToString(«) 17:19
DateTime.Now.ToString(«) 22 ноября 2016 г. 14:19:59
DateTime.Now.ToString(«) 2016-11-22 17:19:59Z
DateTime.Now.ToString(«) Ноябрь 2016

Как видно, есть не так уж и мало различных стандартных вариантов форматирования даты (и времени) при преобразовании в строку, но иногда этого недостаточно. В таком случае, программист может задавать своё форматирование, используя комбинации из следующих вариантов (позже, я приведу несколько примеров компинирования):

Формат Описание
d День месяца. От 1 до 31 (без ведущего нуля)
dd День месяца. От 01 до 31 (с ведущим нулем).
ddd Краткое название дня недели
dddd Полное название дня недели
M Месяц. От 1 до 12 (без ведущего нуля)
MM  Месяц. От 01 до 12 (с ведущим нулем)
MMM Краткое название месяца
MMMM Полное название месяца
y Одна или две последние цифры года (практически неактуально)
yy Две последние цифры года
yyy Три последние цифры года
yyyy Четыре последние цифры года
yyyyy Пять последних цифр года (будет не скоро)
h Час. От 0 до 12. (без ведущего нуля)
hh Час. От 00 до 12 (с ведущим нулем)
H Час. От 0 до 23 (без ведущего нуля)
HH Час. От 00 до 23 (с ведущим нулем)
m Минута. От 0 до 59 (без ведущего нуля)
mm  Минута. От 00 до 59 (с ведущим нулем)
s Секунда. От 0 до 59 (без ведущего нуля)
ss Секунда. От 00 до 59 (с ведущим нулем)
от f до fffffff Миллисекунды. Выводимое количество цифр соответствует количеству «f»
K Часовой пояс
t Половина дня. A или P
tt Половина дня. AM или PM
z Смещение в часах относительно GMT (без ведущего нуля)
zz  Смещение в часах относительно GMT (с ведущим нулем)
g Период или эра

С ведущим нулем (например для часов и минут), означает что если значение будет меньше 10 (т.е. одноразрядным), то перед имеющимся разрядом будет добавлен ноль. Например, так: «05:01» (пять часов, одна минута). Без ведущих нулей мы бы получили следующее: «5:1» (те же пять часов и одна минута, но выглядит уже иначе).

А теперь пример…  Вот так можно вывести в консоль текущее время (часы в 24-х часовом формате с ведущим нулем, минуты с ведущим нулем) и дату (день месяца с ведущим нулем, полное название месяца и год в четырех цифрах):

Console.WriteLine(DateTime.Now.ToString("HH:mm dd MMMM yyyy")); 

Результат будет таким:

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

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

Добавить комментарий