8 марта 2011 г.

Форматирование даты и времени при помощи DateTime.ToString()

Ещё один пример того, когда функционал доступен "из коробки", а начинающие всё равно пытаются написать свой велосипед. Итак, форматирование даты и времени при помощи метода ToString(). Ничего сложного, давайте лучше выведем простые мнемонические правила для запоминания, чтобы каждый раз не лазить в MSDN.

Для примера возьмём произвольную дату, например: 01.02.2003 04:05:06. Преобразовать строку с этой датой в объект DateTime очень просто:

DateTime ExampleDate = DateTime.Parse("01.02.2003 04:05:06");

Опять же, не нужно изобретать велосипед. Итак, форматирование даты при помощи ToString() всегда выполняется с учётом текущих региональных установок. Если мы находимся на компьютере с российскими установками, то все названия месяцев и дней недели будут на русском.

Вызов ToString() без параметров вернёт похожую на исходную строку:
01.02.2003 4:05:06
Почти то же самое, только час идёт без ведущего нуля.

А теперь будем вызывать ToString(), передавая ему в качестве аргумента строку форматирования:
ExampleDate.ToString("y");

Год обозначается маленькой буквой y (year).

  • Строка из одной "y" - это две последних цифры года без ведущего нуля (если он есть).
  • Строка из двух букв "yy" - две последние цифры с ведущим нулём.
  • Три или четыре "yyyy" - все 4 цифры года. Для наглядности используйте 4 символа.

Тут есть одна особенность: если вы передадите строку именно "y", то будет отображён не только год и немного не в том формате, т.к. это воспринимается как стандартная предустановленная строка формата в платформе .NET. Чтобы этого не происходило, добавьте в эту строку любой символ, хоть пробел в конце. Но чаще всего вы будете использовать набор из различных частей даты, поэтому такой ошибки возникать не будет.

Примеры форматирования для нашей даты. Обратите внимание, после одиночного "y" я поставил пробел. Три или четыре символа "y" дают одинаковый результат.

"y ": "3 "
"yy": "03"
"yyy": "2003"
"yyyy": "2003"

Месяц. Обозначается большой буквой "M", т.к. маленькой обозначается минута. Все правила форматирования аналогичны, только три "M" дают трёхбуквенное обозначение месяца:

"M ": "2 "
"MM": "02"
"MMM": "фев"
"MMMM": "Февраль"
Опять же не забудьте, что строка из одного символа "M" - стандартное форматирование и вернёт не то, что вы ожидаете (а вы ожидаете номер месяца без ведущего нуля). Поэтому добавляйте ещё один символ.

День. Обозначается малой буквой "d". Правила такие же:

"d ": "1 "
"dd": "01"
"ddd": "Сб"
"dddd": "суббота"
Уже можно выявить закономерность, что три буквы форматирования показывают сокращённое строковое представление, а четыре - полное строковое представление.

Час. У нас в России используется 24-часовой формат времени (буква "H" большая). В США - 12-ти часовой (буква "h" малая). Изменим исходную дату на 01.02.2003 14:05:06, чтобы продемонстрировать различия. У номера часа названия быть не может, поэтому более двух одинаковых символов смысла использовать нет:

"h ": "2 "
"hh": "02"
"H ": "14 "
"HH": "14"

Минута и секунда. Минута обозначается малой буквой "m" (вспомним, что большая "M" - это месяц). Секунда обозначается малой буквой "s". Тут во всех странах используется один и тот же формат, поэтому комментарии излишни:

"m ": "5 "
"mm": "05"
"s ": "6 "
"ss": "06"

Теперь повторим правила для лучшего запоминания.

  • Один символ - двухзначное число без ведущего нуля.
  • Два символа - двухзначное число с ведущим нулём.

Если число больше или равно десяти, то разницы между этими двумя видами форматирования вы не увидите.

  • Три символа - сокращённое название.
  • Четыре символа - полное название.

Названия могут быть только у месяца и дня недели. Исключение - это год, т.к. три и четыре символа отображаются в 4-х значный номер года.

  • "M" - месяц, а "m" - минута.
  • "H" - 24-часовой формат часа, а "h" - 12-часовой формат.

Всё остальное пишется строчными буквами.

Помимо символов, которые предусмотрены для форматирования, вы можете использовать любые другие символы (например, слова и знаки препинания). Типичное форматирование, которое применяется в подавляющем большинстве блогов и форумов:

"написано d MMMM yyyy в HH:mm": "написано 1 февраля 2003 в 14:05"

Если материал оказался полезен для Вас, нажмите на кнопку Google+ в конце этой заметки.

Комментариев нет:

Отправить комментарий