Ещё один пример того, когда функционал доступен "из коробки", а начинающие всё равно пытаются написать свой велосипед. Итак, форматирование даты и времени при помощи метода 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", то будет отображён не только год и немного не в том формате, т.к. это воспринимается как стандартная предустановленная строка формата в платформе .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-х значный номер года.
Всё остальное пишется строчными буквами.
Помимо символов, которые предусмотрены для форматирования, вы можете использовать любые другие символы (например, слова и знаки препинания). Типичное форматирование, которое применяется в подавляющем большинстве блогов и форумов:
"написано d MMMM yyyy в HH:mm": "написано 1 февраля 2003 в 14:05"
Если материал оказался полезен для Вас, нажмите на кнопку Google+ в конце этой заметки.
Для примера возьмём произвольную дату, например: 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+ в конце этой заметки.
Комментариев нет:
Отправить комментарий