Выбрать главу

12:59:00

12:59:00 PM

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

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

Таблица 22.7. Спецификаторы формата даты и времени

Спецификатор

Формат

D

Дата в длинной форме

d

Дата в краткой форме

F

Дата и время в длинной форме

f

Дата и время в краткой форме

G

Дата — в краткой форме, время — в длинной

gg

Дата и время — в краткой форме

м

Месяц и день

m

То же, что и м

0

Формат даты и времени, включая часовой пояс. Строка, составленная в формате 0, может быть преобразована обратно в эквивалентную форму вывода даты и времени. Это так называемый “круговой” формат

о

То же, что и о

R

Дата и время в стандартной форме по Гринвичу

г

То же, что и R

s

Сортируемый формат представления даты и времени

T

Время в длинной форме

t

Время в краткой форме

Окончание табл. 22.7

Спецификатор

Формат

и

Длинная форма универсального представления даты и времени; время ото

бражается как универсальное синхронизированное время (UTC)

и

Краткая форма универсального представления даты и времени

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("Формат 0: {0:0}", 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:y}", dt);

Console.WriteLine("Y format: {0:Y}", dt) ;

}

}

Эта программа дает следующий результат, который, впрочем, зависит от настроек языковых и региональных параметров локализации базового программного обеспечения.

Формат d: 2/11/2010

Формат D: Thursday, February 11, 2010 Формат t: 11:21 AM    f

Формат 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

В следующем примере программы воспроизводятся очень простые часы. Время обновляется каждую секунду, и каждый час компьютер издает звонок. Для получения отформатированного строкового представления времени перед его выводом в этой программе используется метод ToStringO из структуры DateTime. Через каждый час символ звукового предупреждающего сигнала присоединяется к отформатированной строке, представляющей время, в результате чего звенит звонок.

// Пример простых часов.

using System;

class SimpleClock { static void Main() { string t; int seconds;

DateTime dt = DateTime.Now; seconds = dt.Second;

for(;;)    {

dt = DateTime.Now;