Книга: C# 4.0: полное руководство

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

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

Начиная с версии 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 секунды

Оглавление книги


Генерация: 9.219. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз