KnigaRead.com/
KnigaRead.com » Разная литература » Прочее » Герберт Шилдт - C# 4.0 полное руководство - 2011

Герберт Шилдт - C# 4.0 полное руководство - 2011

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн "Герберт Шилдт - C# 4.0 полное руководство - 2011". Жанр: Прочее издательство неизвестно, год неизвестен.
Перейти на страницу:

Символ-заполнитель

Назначение

tt

A.M. или P.M.

У

Год в виде двух цифр, если недостаточно одной

УУ

Год в виде двух цифр. Числовые значения в пределах от 1 до 9 дополняются начальным нулем

УУУ

Год в виде трех цифр

УУУУ

Год в виде четырех цифр

УУУУУ

Год в виде пяти цифр

z

Смещение часового пояса в часах

zz

Смещение часового пояса в часах. Числовые значения в пределах от 1 до 9 дополняются начальным нулем

zzz

Смещение часового пояса в часах и минутах

:

Разделитель для составляющих значения времени

/

Разделитель для составляющих значения даты

%fmt

Стандартный формат, соответствующий спецификатору формата fmt

Глядя на табл. 22.8, можно заметить, что символы-заполнители d, f, g, 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 появилась возможность форматировать объекты типа Time Span — структуры, представляющей промежуток времени. Объект типа Time Span может быть получен самыми разными способами, в том числе и в результате вычитания одного объекта типа DateTime из другого. И хотя форматировать объекты типа Time Span приходится нечасто, о такой возможности все же стоит упомянуть вкратце.

По умолчанию в структуре Time Span поддерживаются три стандартных спецификатора формата даты и времени: с, g и G. Они обозначают инвариантную форму промежутка времени, короткую и длинную форму с учетом культурной среды соответственно (последняя форма всегда включает в себя дни). Кроме того, в структуре Time Span поддерживаются специальные спецификаторы формата даты и времени, приведенные в табл. 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 отображаются имена всех битовых составляющих форматируемого значения, если оно составляется путем логического сложения по ИЛИ двух или более полей, определяемых в перечислении.

Таблица 22.10. Спецификаторы формата перечислений Спецификатор Назначение

D    Отображает    значение    в виде десятичного целого числа

d    То же, что и D

F    Отображает имя значения.    Если это значение    можно создать путем логиче

ского сложения по ИДИ двух или более полей, определенных в перечислении, то данный спецификатор отображает имена всех битовых составляющих заданного значения, причем независимо оттого, задан атрибут Flags или нет

f    То же, что и F

G    Отображает имя значения.    Если перед форматируемым перечислением    ука

зывается атрибут Flags, то данный спецификатор отображает имена всех битовых составляющих заданного значения, если, конечно, это допустимое значение g    То же, что и G

X    Отображает значение    в виде шестнадцатеричного целого числа. Для отобра

жения как минимум восьми цифр форматируемое значение дополняется (при необходимости) начальными нулями х_То же, что и X_

В приведенной ниже программе демонстрируется применение спецификаторов формата перечислений.

// Отформатировать перечисление.

using System;

class EnumFmtDemo {

enum Direction { North, South, East, West }

[Flags] enum Status { Ready=0xl, OffLine=Ox2,

Waiting=0x4, TransmitOK=Ox8,

ReceiveOK=OxlO, OnLine=0x20 }

static void Main() {

Direction d = Direction.West;

Console.WriteLine("{0:G}", d);

Console.WriteLine("{0:F}", d);    1

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*