Страница 393 из 502
<b> Console.WriteLine("Время в 24-часовом формате: {0:HH:mm}", dt) ;</b>
<b> Console.WriteLine("Дата: {0:ddd МММ dd, yyyy}", dt) ;</b>
<b> Console.WriteLine("Эра: {0:gg}", dt) ;</b>
<b> Console.WriteLine("Время в секундах: " +</b>
<b> "{0:HH:mm:ss tt}", dt) ;</b>
<b> Console.WriteLine("День месяца в формате m: {0:m}", dt);</b>
<b> Console.WriteLine("Минуты в формате m: {0:%m}", dt);</b>
<b> }</b>
<b>}</b>
Вот к какому результату приводит выполнение этой программы (опять же все зависит от конкретных настроек языковых и региональных параметров локализации базового программного обеспечения).
<b>Время: 11:19 AM</b>
<b>Время 24-часовом формате: 11:19</b>
<b>Дата: Thu Feb 11, 2010</b>
<b>Эра: A.D.</b>
<b>Время в секундах: 11:19:40 AM</b>
<b>День месяца в формате m: February 11</b>
<b>Минуты в формате m: 19</b>
Форматирование промежутков времени
Начиная с версии 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.
<b>// Отформатировать объект типа TimeSpan.</b>
<b>using System;</b>
<b>class TimeSpanDemo {</b>
<b> static void Main() {</b>
<b> DateTime start = DateTime.Now;</b>
<b> // Вывести числа от 1 до 1000.</b>
<b> for(int i = 1; i <= 1000; i++) {</b>
<b> Console.Write(i + " ");</b>
<b> if((i % 10) == 0) Console.WriteLine();</b>
<b> }</b>
<b> Console.WriteLine();</b>
<b> DateTime end = DateTime.Now;</b>
<b> TimeSpan span = end - start;</b>
<b> Console.WriteLine("Время выполнения: {0:c}", span);</b>
<b> Console.WriteLine("Время выполнения: {0:g}", span);</b>
<b> Console.WriteLine("Время выполнения: {0:G}", span);</b>
<b> Console.WriteLine("Время выполнения: 0.{0:fff} секунды", span);</b>
<b> }</b>
<b>}</b>
Выполнение этой программы приводит к следующему результату, который и в этом случае зависит от конкретных настроек языковых и региональных параметров локализации базового программного обеспечения, а также от загрузки системы задачами и ее быстродействия.
<b>. . .</b>
<b>981 982 983 984 985 986 987 988 989 990</b>
<b>991 992 993 994 995 996 997 998 999 1000</b>
<b>Время выполнения: 00:00:00.0140000</b>