Чтение онлайн

на главную - закладки

Жанры

Полное руководство. С# 4.0
Шрифт:

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

Таблица 22.8. Символы-заполнители специального формата даты и времени Символ-заполнитель Назначение d День месяца в виде числа в пределах от 1 до 31 dd День месяца в виде числа в пределах

от 1 до 31. Числовые значения в пределах от 1 до 9 дополняются начальным нулем ddd Сокращенное название дня недели dddd Полное название дня недели f, ff, fff, ffff, fffff, ffffff, fffffff Дробная часть числового значения, обозначающего секунды. Количество десятичных разрядов определяется числом заданных символов f g Эра h Часы в виде числа в пределах от 1 до 12 hh Часы в виде числа в пределах от 1 до 12. Числовые значения в пределах от 1 до 9 дополняются начальным нулем H Часы в виде числа в пределах от 0 до 23 HH Часы в виде числа в пределах от 0 до 23. Числовые значения в пределах от 1 до 9 дополняются начальным нулем К Часовой пояс, указываемый в часах. Для автоматической коррекции местного времени и универсального синхронизированного времени (UTC) используется значение свойства DateTime.Kind. (Этот спецификатор формата рекомендуется теперь вместо спецификаторов с символамизаполнителями Z.) m Минуты mm Минуты. Числовые значения в пределах от 1 до 9 дополняются начальным нулем M Месяц в виде числа в пределах от 1 до 12 MM Месяц в виде числа в пределах от 1 до 12. Числовые значе ния в пределах от 1 до 9 дополняются начальным нулем МММ Сокращенное название месяца MMMM Полное название месяца s Секунды ss Секунды. Числовые значения в пределах от 1 до 9 дополняются начальным нулем t Символ "А” или “Р”, обозначающий время А.М. (до полудня) или P.M. (после полудня) соответственно tt A.M. или P.M. У Год в виде двух цифр, если недостаточно одной УУ Год в виде двух цифр. Числовые значения в пределах от 1 до 9 дополняются начальным нулем УУУ Год в виде трех цифр УУУУ Год в виде четырех цифр УУУУУ Год в виде пяти цифр z Смещение часового пояса в часах zz Смещение часового пояса в часах. Числовые значения в пределах от 1 до 9 дополняются начальным нулем zzz Смещение часового пояса в часах и минутах : Разделитель для составляющих значения времени / Разделитель для составляющих значения даты %fmt Стандартный формат, соответствующий спецификатору формата fmt

Глядя на табл. 22.8, можно заметить, что символы-заполнители d, f, g, m, M, s и t выполняют ту же функцию, что и аналогичные символы-заполнители из табл. 22.7. Вообще говоря, если один из этих символов указывается отдельно, то он интерпре тируется как спецификатор формата. В противном случае он считается символом- заполнителем. Поэтому если требуется указать несколько таких символов отдельно, но интерпретировать их как символы-заполнители, то перед каждым из них следует поставить знак %.

В приведенном ниже примере программы демонстрируется применение несколь ких форматов даты и времени. // Отформатировать дату и время, используя специальные форматы. using System; class CustomTimeAndDateFormatsDemo { static void Main { DateTime dt = DateTime.Now; Console.WriteLine("Время: {0:hh:mm tt}", dt); Console.WriteLine("Время в 24-часовом формате: {0:HH:mm}", dt); Console.WriteLine("Дата: {0:ddd МММ dd, yyyy}", dt); Console.WriteLine("Эра: {0:gg}", dt); Console.WriteLine("Время в секундах: " + "{0:HH:mm:ss tt}", dt); Console.WriteLine("День месяца в формате m: {0:m}", dt); Console.WriteLine("Минуты в формате m: {0:%m}", dt); } }

Вот к какому результату приводит выполнение этой программы (опять же все за висит от конкретных настроек языковых и региональных параметров локализации ба зового программного обеспечения). Время: 11:19 AM Время 24-часовом формате: 11:19 Дата: Thu Feb 11, 2010 Эра: A.D. Время в секундах: 11:19:40 AM День месяца в формате m: February 11 Минуты в формате т: 19 Форматирование промежутков времени

Начиная с версии 4.0, в среде .NET Framework появилась возможность формати ровать объекты типа TimeSpan — структуры, представляющей промежуток

времени. Объект типа TimeSpan может быть получен самыми разными способами, в том числе и в результате вычитания одного объекта типа DateTime из другого. И хотя формати ровать объекты типа TimeSpan приходится нечасто, о такой возможности все же стоит упомянуть вкратце.

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

Таблица 22.9. Символы-заполнители специального формата промежутка времени Символ-заполнитель Назначение d, dd, ddd, dddd, ddddd, dddddd, ddddddd Целые дни. Если указано несколько символов-заполнителей d, то отображается, по крайней мере, указанное количество цифр с начальными нулями, если требуется h, hh Часы (не считая тех, что составляют часть целого дня). Если указано hh, то отображаются две цифры с начальными нулями, если требуется m, mm Минуты (не считая тех, что составляют часть целого часа). Если указано mm, то отображаются две цифры с начальными нулями, если требуется s, ss Секунды (не считая тех, что составляют часть целой минуты). Если указано ss, то отображаются две цифры с начальными нулями, если требуется f, ff, fff, ffff, fffff, ffffff, fffffff Дробные доли секунды. Количество символов-заполнителей f обозначает точность представления, а остальные цифры отбрасываются F, FF, FFF, FFFF, FFFFF, FFFFFF, FFFFFFF Дробные доли секунды. Количество символов-заполнителей F обозначает точность представления, а остальные цифры отбрасываются и конечные нули не отображаются

В приведенной ниже программе демонстрируется форматирование объектов типа TimeSpan на примере отображения времени, которое приблизительно требуется для вывода на экран 1000 целых значений в цикле for. // Отформатировать объект типа TimeSpan. using System; class TimeSpanDemo { static void Main { DateTime start = DateTime.Now; // Вывести числа от 1 до 1000. for(int i = 1; i <= 1000; i++) { Console.Write(i + " "); if((i % 10) == 0) Console.WriteLine; } Console.WriteLine; DateTime end = DateTime.Now; TimeSpan span = end - start; Console.WriteLine("Время выполнения: {0:c}", span); Console.WriteLine("Время выполнения: {0:g}", span); Console.WriteLine("Время выполнения: {0:G}", span); Console.WriteLine("Время выполнения: 0.{0:fff} секунды", span); } }

Выполнение этой программы приводит к следующему результату, который и в этом случае зависит от конкретных настроек языковых и региональных параметров локализации базового программного обеспечения, а также от загрузки системы за дачами и ее быстродействия. 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 Время выполнения: 00:00:00.0140000 Время выполнения: 0:00:00.014 Время выполнения: 0:00:00:00.0140000 Время выполнения: 0.014 секунды Форматирование перечислений

В C# допускается также форматировать значения, определяемые в перечислении. Вообще говоря, значения из перечисления могут отображаться как по имени, так и по значению. Спецификаторы формата перечислений сведены в табл. 22.10. Обратите особое внимание на форматы G и F. Перед перечислениями, которые должны пред ставлять битовые поля, следует указывать атрибут Flags. Как правило, в битовых по лях хранятся значения, обозначающие отдельные двоичные разряды и упорядоченные по степени числа 2. При наличии атрибута Flags имена всех битовых составляющих форматируемого значения, если, конечно, это действительное значение, отображают ся с помощью спецификатора G. А с помощью спецификатора F отображаются имена всех битовых составляющих форматируемого значения, если оно составляется путем логического сложения по ИЛИ двух иди более полей, определяемых в перечислении.

Поделиться:
Популярные книги

Новый Рал

Северный Лис
1. Рал!
Фантастика:
фэнтези
попаданцы
5.70
рейтинг книги
Новый Рал

Адвокат Империи 2

Карелин Сергей Витальевич
2. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Адвокат Империи 2

Архонт

Прокофьев Роман Юрьевич
5. Стеллар
Фантастика:
боевая фантастика
рпг
7.80
рейтинг книги
Архонт

Чехов. Книга 3

Гоблин (MeXXanik)
3. Адвокат Чехов
Фантастика:
альтернативная история
5.00
рейтинг книги
Чехов. Книга 3

Сирота

Шмаков Алексей Семенович
1. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Сирота

Бомбардировщики. Полная трилогия

Максимушкин Андрей Владимирович
Фантастика:
альтернативная история
6.89
рейтинг книги
Бомбардировщики. Полная трилогия

Сделай это со мной снова

Рам Янка
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сделай это со мной снова

Наследник

Кулаков Алексей Иванович
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
8.69
рейтинг книги
Наследник

Эра Мангуста. Том 2

Третьяков Андрей
2. Рос: Мангуст
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эра Мангуста. Том 2

Выйду замуж за спасателя

Рам Янка
1. Спасатели
Любовные романы:
современные любовные романы
7.00
рейтинг книги
Выйду замуж за спасателя

Скандальный развод, или Хозяйка владений "Драконье сердце"

Милославская Анастасия
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Скандальный развод, или Хозяйка владений Драконье сердце

Морана

Кулаков Алексей Иванович
Фантастика:
фэнтези
альтернативная история
5.00
рейтинг книги
Морана

Громовая поступь. Трилогия

Мазуров Дмитрий
Громовая поступь
Фантастика:
фэнтези
рпг
4.50
рейтинг книги
Громовая поступь. Трилогия

Наследник пепла. Книга II

Дубов Дмитрий
2. Пламя и месть
Фантастика:
фэнтези
5.00
рейтинг книги
Наследник пепла. Книга II