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

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

Жанры

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

Помимо символов-заполнителей, пользовательский спецификатор формата может содержать любые другие символы, которые появляются в отформатированной строке без изменения на тех местах, где они указаны в спецификаторе формата. Например, при выполнении следующего фрагмента кода: Console.WriteLine("КПД топлива: (0:##.# миль на галлон }", 21.3);

выводится такой результат. КПД топлива: 21.3 миль на галлон

При необходимости в форматируемой строке можно также указывать такие управ ляющие последовательности, как \t или \n.

Символы-заполнители Е и е обусловливают отображение числовых значений в экс поненциальном представлении. В этом случае после символа Е или е должен быть указан хотя бы один нуль, хотя их может быть и больше. Нули обозначают количество отображаемых десятичных цифр. Дробная

часть числового значения округляется в со ответствии с заданным форматом отображения. Если указывается символ Е, то он ото бражается прописной буквой "Е". А если указывается символ е, то он отображается строчной буквой "е". Для того чтобы знак порядка отображался всегда, используются формы Е+ или е+. А для отображения знака порядка только при выводе отрицатель ных значений служат формы Е, е, Е- или е-.

Знак ; служит разделителем в различных форматах вывода положительных, от рицательных и нулевых значений. Ниже приведена общая форма пользовательского спецификатора формата, в котором используется знак ;. положительныйформат; отрицательныйформат; нулевой_формат Рассмотрим следующий пример. Console.WriteLine("{0:#.##; (#.##);0.00}", num);

Если значение переменной num положительно, то оно отображается с двумя раз рядами после десятичной точки. Если же значение переменной num отрицательно, то оно также отображается с двумя разрядами после десятичной точки, но в круглых скобках. А если значение переменной num равно нулю, то оно отображается в виде строки 0.00. Когда используются разделители, указывать все части приведенной выше формы пользовательского спецификатора формата совсем не обязательно. Так, если требуется вывести только положительные или отрицательные значения, нулевой формат можно опустить. (В данном случае нуль форматируется как положительное значение.) С другой стороны, можно опустить отрицательныйформат. И в этом слу чае положительныйформат и нулевойформат должны разделяться точкой с запя той. А в итоге положительный_формат будет использоваться для форматирования не только положительных, но и отрицательных значений.

В приведенном ниже примере программы демонстрируется лишь несколько спе циальных форматов, которые могут быть определены пользователем. // Пример применения специальных форматов. using System; class PictureFormatDemo { static void Main { double num = 64354.2345; Console.WriteLine("Формат по умолчанию: " + num); // Отобразить числовое значение с 2 разрядами после десятичной точки. Console.WriteLine("Значение с 2 десятичными разрядами: " + "(0:#.##)", num); // Отобразить числовое значение с 2 разрядами после // десятичной точки и запятыми перед ней. Console.WriteLine("Добавить запятые: (0:#,###.##}", num); // Отобразить числовое значение в экспоненциальном представлении. Console.WriteLine("Использовать экспоненциальное представление: " + "{0:#.###е+00}", num); // Отобразить числовое значение, масштабированное в тысячах. Console.WriteLine("Значение в тысячах: " + "(0:#0,)", num); /* Отобразить по-разному положительные, отрицательные и нулевые значения. */ Console.WriteLine("Отобразить по-разному положительные," + "отрицательные и нулевые значения."); Console.WriteLine("{0:#.#;(#.##);0.00}", num); num = -num; Console.WriteLine("{0:#.##;(#.##);0.00}", num); num = 0.0; Console.WriteLine("{0:#.##;(#.##);0.00}", num); // Отобразить числовое значение в процентах. num = 0.17; Console.WriteLine("Отобразить в процентах: {0:#%}", num); } }

Ниже приведен результат выполнения этой программы. Формат по умолчанию: 64354.2345 Значение с 2 десятичными разрядами: 64354.23 Добавить запятые: 64,354.23 Использовать экспоненциальное представление: 6.435е+04 Значение в тысячах: 64 Отобразить по-разному положительные, отрицательные и нулевые значения. 64354.2 (64354.23) 0.00 Отобразить в процентах: 17% Форматирование даты и времени

Помимо числовых значений, форматированию нередко подлежит и другой тип данных: DateTime. Это структура, представляющая дату и время. Значения даты и времени могут отображаться самыми разными способами. Ниже приведены лишь не которые примеры их отображения. 06/05/2005 Friday, January 1, 2010 12:59:00 12:59:00 PM

Кроме

того, дата и время могут быть по-разному представлены в отдельных стра нах. Для этой цели в среде .NET Framework предусмотрена обширная подсистема форматирования значений даты и времени.

Форматирование даты и времени осуществляется с помощью спецификаторов формата. Спецификаторы формата даты и времени сведены в табл. 22.7. Конкретное представление даты и времени может отличаться в силу региональных и языковых осо бенностей и поэтому зависит от настройки параметров культурной среды.

Таблица 22.7. Спецификаторы формата даты и времени Спецификатор Формат D Дата в длинной форме d Дата в краткой форме F Дата и время в длинной форме f Дата и время в краткой форме G Дата — в краткой форме, время — в длинной gg Дата и время — в краткой форме м Месяц и день m То же, что и M O Формат даты и времени, включая часовой пояс. Строка, составленная в формате O, может быть преобразована обратно в эквивалентную форму вывода даты и времени. Это так называемый “круговой” формат o То же, что и O R Дата и время в стандартной форме по Гринвичу r То же, что и R S Сортируемый формат представления даты и времени Т Время в длинной форме t Время в краткой форме U Длинная форма универсального представления даты и времени; время отображается как универсальное синхронизированное время (UTC) u Краткая форма универсального представления даты и времени Y Месяц и год y То же, что и Y

В приведенном ниже примере программы демонстрируется применение специфи каторов формата даты и времени. // Отформатировать дату и время, используя стандартные форматы. using System; class TimeAndDateFormatDemo { static void Main { DateTime dt = DateTime.Now; // получить текущее время Console.WriteLine("Формат d: {0:d}", dt); Console.WriteLine("Формат D: {0:D}", dt); Console.WriteLine("Формат t: {0:t}", dt); Console.WriteLine("Формат T: {0:T}", dt); Console.WriteLine("Формат f: {0:f}", dt); Console.WriteLine("Формат F: {0:F}", dt); Console.WriteLine("Формат g: {0:g}", dt); Console.WriteLine("Формат G: {0:G}", dt); Console.WriteLine("Формат m: {0:m}", dt); Console.WriteLine("Формат M: {0:M}", dt); Console.WriteLine("Формат о: (0:o)", dt); Console.WriteLine("Формат O: (0:O}", dt); Console.WriteLine("Формат r: {0:r}", dt); Console.WriteLine("Формат R: {0:R}", dt); Console.WriteLine("Формат s: {0:s}", dt); Console.WriteLine("Формат u: {0:u}", dt); Console.WriteLine("Формат U: {0:U}", dt); Console.WriteLine("Формат у: {0:у}", dt); Console.WriteLine("Y format: {0:Y}", dt); } }

Эта программа дает следующий результат, который, впрочем, зависит от настроек языковых и региональных параметров локализации базового программного обеспе чения. Формат d: 2/11/2010 Формат D: Thursday, February 11, 2010 Формат t: 11:21 AM Формат T: 11:21:23 AM Формат f: Thursday, February 11, 2010 11:21 AM Формат F: Thursday, February 11, 2010 11:21:23 AM Формат g: 2/11/2010 11:21 AM Формат G: 2/11/2010 11:21:23 AM Формат m: February 11 Формат M: February 11 Формат о: 2010-02-11T11:21:23.3768153-06:00 Формат О: 2010-02-11T11:21:23.3768153-06:00 Формат r: Thu, 11 Feb 2010 11:21:23 GMT Формат R: Thu, 11 Feb 2010 11:21:23 GMT Формат s: 2010-02-11T11:21:23 Формат u: 2010-02-11 11:21:23Z Формат U: Thursday, February 11, 2010 5:21:23 PM Формат у: February, 2010 Формат Y: February, 2010

В следующем примере программы воспроизводятся очень простые часы. Время об новляется каждую секунду, и каждый час компьютер издает звонок. Для получения от форматированного строкового представления времени перед его выводом в этой про грамме используется метод ToString из структуры DateTime. Через каждый час символ звукового предупреждающего сигнала присоединяется к отформатированной строке, представляющей время, в результате чего звенит звонок. // Пример простых часов. using System; class SimpleClock { static void Main { string t; int seconds; DateTime dt = DateTime.Now; seconds = dt.Second; for(;;) { dt = DateTime.Now; // обновлять время через каждую секунду if (seconds != dt.Second) { seconds = dt.Second; t = dt.ToString("T"); if(dt.Minute==0 && dt.Second==0) t = t + "\a"; // производить звонок через каждый час Console.WriteLine(t); } } } } Определение пользовательского формата даты и времени

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

Начальник милиции. Книга 5

Дамиров Рафаэль
5. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 5

Папина дочка

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

Возвышение Меркурия. Книга 8

Кронос Александр
8. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 8

АллатРа

Новых Анастасия
Научно-образовательная:
психология
история
философия
обществознание
физика
6.25
рейтинг книги
АллатРа

Золушка вне правил

Шах Ольга
Любовные романы:
любовно-фантастические романы
6.83
рейтинг книги
Золушка вне правил

Возвышение Меркурия. Книга 5

Кронос Александр
5. Меркурий
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 5

На Ларэде

Кронос Александр
3. Лэрн
Фантастика:
фэнтези
героическая фантастика
стимпанк
5.00
рейтинг книги
На Ларэде

Барон Дубов 6

Карелин Сергей Витальевич
6. Его Дубейшество
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Барон Дубов 6

Ротмистр Гордеев

Дашко Дмитрий Николаевич
1. Ротмистр Гордеев
Фантастика:
фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Ротмистр Гордеев

Кодекс Крови. Книга VI

Борзых М.
6. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VI

Лучше подавать холодным

Аберкромби Джо
4. Земной круг. Первый Закон
Фантастика:
фэнтези
8.45
рейтинг книги
Лучше подавать холодным

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Крестоносец

Ланцов Михаил Алексеевич
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Крестоносец

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12