Время 24-часовом формате: 11:19



Дата: Thu Feb 11, 2010

Эра: A.D.

Время в секундах: 11:19:40 AM

День месяца в формате m: February 11

Минуты в формате m: 19

 

 

Форматирование промежутков времени

 

 

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

По умолчанию в структуре TimeSpan поддерживаются три стандартных спецификатора формата даты и времени: с, 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 = 0x1, OffLine = 0x2,

Waiting = 0x4, TransmitOK = 0x8,

ReceiveOK = 0x10, OnLine = 0x20

}

 

static void Main() {

Direction d = Direction.West;

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

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

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

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

 

Status s = Status.Ready | Status.TransmitOK;

 

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

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

Console.WriteLine("{0:D}", s);

Console.WriteLine("{0:X}", s);

}

}

 

Ниже приведен результат выполнения этой программы.

 

West

West

3

00000003

Ready, TransmitOK

Ready, TransmitOK

9

00000009

 


Дата добавления: 2019-02-12; просмотров: 269; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!